home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / systems / atari / birkhahn-metafont-packed-disks / mf27-2_2e-disk2.zoo / doc.lzh / MF_MAN.TEX (.txt) < prev    next >
LaTeX Document  |  1992-05-04  |  88KB  |  1,418 lines

  1. % macropackage=lplaing
  2. % F"ur das Format DIN-A5 (vergr"o"sert ausgedruckt auf DIN-A4) sind die
  3. % Zeilen mit "%A5" am Anfang einzuschalten.
  4. \documentstyle[twoside,german,mflogo,a4-9,oldlfont]{report}
  5. %A5 \documentstyle[twoside,german,mflogo,a4,12pt,oldlfont]{report}
  6. \pagestyle{headings}
  7. \newfont{\mc}{cmr9} % medium caps
  8. \newfont{\bmc}{cmbx9} % bold medium caps
  9. %A5 \newfont{\mc}{cmr10 scaled \magstephalf} % medium caps
  10. %A5 \newfont{\bmc}{cmbx10 scaled \magstephalf} % bold medium caps
  11. \newcommand{\inimf}{{\mc INIMF}}
  12. \newcommand{\gem}{{\mc GEM}}
  13. \newcommand{\tos}{{\mc TOS}}
  14. \newcommand{\gemdos}{{\mc GEM}\-{\mc DOS}}
  15. \newcommand{\bs}{$\backslash$}
  16. \newcommand{\env}[1]{{\mc #1}}
  17. \newcommand{\benv}[1]{{\bmc #1}} % bold env. variable
  18. \newcommand{\file}[1]{{\tt\uppercase{#1}}}  % file name
  19. \newcommand{\bfile}[1]{{\tt\uppercase{#1}}} % bold file name
  20. % Wenn kein "New Font Selection Scheme" (NFSS von Mittelbach/Sch"opf)
  21. % installiert ist, dann mu"s man die Styleoption mflogo aus dem
  22. % \documentstyle rausschmei"sen, die folgenden Definitionen durch
  23. % Entfernen des % aktivieren und darf sich dann dar"uber "argern, da"s
  24. % alle METAFONT-Logos genau gleich gro"s sind, egal, ob sie nun auf der
  25. % Titelseite oder im laufenden Text erscheinen. Wer alte Versionen meiner
  26. % METAFONT-Anleitung kennt, wei"s, da"s dort u.a. bei jeder "Uberschrift, die
  27. % das METAFONT-Logo enth"alt, alle m"oglichen Tricks veranstaltet werden
  28. % mu"sten, um in der "Uberschrift selbst, im Inhaltsverzeichnis und in der
  29. % Kopfzeile auf jeder Seite das Logo im jeweils passenden Schriftschnitt
  30. % anzuw"ahlen. Genau dies ist nun mit dem NFSS nicht mehr n"otig (an dieser
  31. % Stelle auch mal ein gro"ses Dankesch"on an Frank Mittelbach und Rainer Sch"opf
  32. % f"ur ihre riesige Arbeit).
  33. % Zur Information: NFSS ist eine Style-Option, die die Fontauswahl von
  34. % LaTeX komplett durch eine neue ersetzt. NFSS ist eine Vorarbeit zu neuen
  35. % LaTeX-Versionen (2.10 oder irgendwann 3.0), um jetzt schon mit einigen
  36. % der neuen M"oglichkeiten arbeiten und experimentieren zu k"onnen. Mit NFSS
  37. % ist es erheblich leichter, neue Fontfamilien (z.B. Pandora-Fonts, AMS-
  38. % Fonts, diverse PostScript-Fonts, oder eben Logos in verschiedenen Gr"o"sen
  39. % und Schnitten) in ein Dokument einzubinden. In bisherigen LaTeX-Versionen
  40. % mu"ste man dazu immer lfonts.tex "andern, wenn die neuen Fonts auch automa-
  41. % tisch ihre Gr"o"se "andern oder z.B. fett erscheinen sollten. Hinzu kam dann
  42. % nat"urlich noch das Erzeugen einer neuen Format-Datei mit IniTeX...
  43. % Ein weiterer Vorteil von NFSS ist die Entkopplung der Fontauswahl von
  44. % der Gr"o"senangabe. In LaTeX 2.09 schaltet "\bf\large" nicht etwa auf eine
  45. % gro"se Fettschrift um, sondern auf gro"se "Normalschrift" (Roman) um, weil
  46. % die Gr"o"senauswahl automatisch auch eine Fontauswahl beinhaltet ("\large\bf"
  47. % liefert das Gew"unschte). Au"serdem ist mit NFSS die Fontauswahl nicht ein-
  48. % dimensional, sondern bietet drei voneinander unabh"angige Parameter (wenn
  49. % man von der Gr"o"senangabe mal absieht): family, series und shape, z.B.
  50. % "Computer Modern/medium/normal = cmr" oder "Computer Modern/bold extended/
  51. % italic = cmbxti", oder nat"urlich auch "METAFONT-Logo/bold extended/normal
  52. % = logobf". Man kann nun mit NFSS einstellen, ob man kompatibel zur alten
  53. % LaTeX-L"osung sein will (und damit auch fast alle alten Dokumente ohne
  54. % Probleme "ubersetzen kann), oder ob man die neuen M"oglichkeiten nutzen
  55. % m"ochte, und z.B. mit "\bf\it\large" auf einen fetten, kursiven (!) Schrift-
  56. % schnitt in beispielsweise 12 Punkt Gr"o"se umschaltet. In diesem Fall mu"s
  57. % man ggfs. bei alten Dokumenten ein "oldlfont" bei den Styleoptionen (in
  58. % den eckigen Klammern bei \documenstyle) angeben.
  59. % Leider ist auf den beiden METAFONT-Disketten nicht mehr gen"ugend Platz,
  60. % um das NFSS (auf Platten und Disketten meist unter dem Namen "fontsel"
  61. % zu finden) mitzuliefern. Wer es noch nicht besitzt, kann bei mir die
  62. % Diskette 220 (TeX-Makros) oder 020 (AMS-Fonts + NFSS) bestellen (siehe
  63. % Datei DISKLIST.DOC), oder sich das NFSS bei Dante oder bei Stefan Lind-
  64. % ner besorgen oder von einem der vielen per Modem oder Datennetz erreich-
  65. % baren TeX-Server (rusinfo in Stuttgart, dhdurz1 in Heidelberg, Stefan
  66. % Lindners Bagdad-TeX-Server) kopieren.
  67. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  68. % \newfont{\logo}{logo12}
  69. % \newcommand{\mf}{{\logo META}\-{\logo FONT}}
  70. \hfuzz 1.3pt  % Soviel darf es schon mal "uber den rechten Rand hinausragen
  71. \emergencystretch 3pt % diese Zeile l"oschen, falls noch kein TeX >= 3.0!
  72. \setcounter{secnumdepth}{1} % Nur bis \section durchnumerieren
  73. \setcounter{tocdepth}{1}    % Im Inhaltsverz. nur \chapter und \section
  74. \hyphenation{back-slash byte bytes da-tei-na-men}
  75. \begin{document}
  76. %******************************* Titelseite ********************************
  77. \title{{\Huge\mf} \\[1.5cm]
  78.   {\normalsize (Version%
  79.   \thanks{Die erste Versionsnummer ist die offizielle Z"ahlung von
  80.    Donald~E.~Knuth, die zweite bezeichnet die aktuelle Implementation
  81.    auf dem Atari~ST}
  82.   2.7 / 2.2)} \\[1.5cm]
  83.  Bedienungsanleitung}
  84. \author{Lutz Birkhahn}
  85. \date{April 1992}
  86. \maketitle
  87. %**************************** 2. Seite (Copyright) *************************
  88. \begin{titlepage}
  89. \noindent Diese Anleitung darf von jedermann kopiert oder ausgedruckt werden,
  90. solange damit keine kommerziellen Interessen verbunden sind.
  91. \vfill
  92. \raggedright
  93. Sechste Auf"|lage.\\
  94. April 1992\\
  95. \end{titlepage}
  96. %***************************** Inhaltsverzeichnis **************************
  97. \tableofcontents
  98. %******************************* Einfuehrung ********************************
  99. \chapter{Einf"uhrung}
  100. Im f"unfzehnten Jahrhundert wurde das erste mal versucht, Buchstaben auf
  101. mathematischem Wege zu erzeugen. Nach einer Bl"utezeit im sechzehnten und
  102. siebzehnten Jahrhundert wurde diese Methode im achtzehnten Jahrhundert
  103. aufgegeben, die Ergebnisse waren einfach zu schlecht. Erst seitdem
  104. in der heutigen Zeit
  105. Computer die Berechnungen schnell und exakt durchf"uhren k"onnen (auch
  106. die Mathematik ist w"ahrend dieser Zeit nicht stehen geblieben), scheint
  107. es m"oglich und vielleicht auch lohnend zu sein, die Mathematik zur
  108. Erzeugung von Buchstaben zu verwenden.
  109. Der bekannte Mathematiker und Informatiker Donald~E.~Knuth hat sich seit
  110. 1977 mit dem weiten Gebiet der Typographie besch"aftigt, nachdem er die
  111. ersten mit Computerhilfe hergestellten Drucke seiner Buchreihe
  112. "`The Art of Computer Programming"' gesehen hatte. Die erste Auf"|lage
  113. dieser Buchreihe war noch im Bleisatzverfahren hergestellt worden, und Knuth
  114. war nach einem Vergleich des damals noch neuen Computersatzes mit den
  115. herk"ommlichen Druckverfahren so entt"auscht von der neuen Technik, da"s er
  116. sich seine eigenen Gedanken "uber Typographie in Verbindung mit Computern
  117. machte. Ergebnisse dieser Forschungsarbeiten waren das Schriftsatzprogramm
  118. \TeX 78 und \mf 79, ein Programm f"ur den Entwurf von Schriften f"ur
  119. rasterorientierte Ausgabeger"ate mit mathematischen Mitteln. Nach einigen
  120. Jahren Erfahrung mit diesen beiden Programmen hat er 1982 eine neue
  121. Version von \TeX\ und 1984 ein neues \mf\ geschrieben.
  122. \mf\ entwickelte er praktisch vollkommen neu, nachdem sich gezeigt hatte,
  123. da"s der bisherige Ansatz erhebliche Schw"achen aufwies.
  124. Dieses neue \mf\ (und auch das neue \TeX) hat Knuth in der von ihm
  125. erdachten, Pascal-"ahnlichen Sprache {\mc WEB} formuliert und in Buchform
  126. \cite{mfprog,texprog}
  127. ver"offentlicht. Das eigentlich neue an {\mc WEB} ist die Kombination von
  128. Programm und Dokumentation in {\it einer\/} Datei, wof"ur Knuth den Begriff
  129. "`Literarisches Programmieren"' eingef"uhrt hat\cite{web}.
  130. Und in der Tat sind die
  131. Programme fast so gut lesbar wie ein Roman, und sie verdeutlichen,
  132. was Knuth von der "`Kunst, zu programmieren"' versteht. Mein Dank geht an
  133. Knuth, da"s er seine Kunst nicht nur theoretisch in den B"uchern
  134. "`The Art of Computer Programming"' ver"offentlicht, sondern sie
  135. auch praktisch in den Programmen \TeX\ und \mf\ vorgef"uhrt hat.
  136. Angesichts dieser gro"sen Leistungen war es f"ur Stefan Lindner und mich
  137. -- als wir im Fr"uhling 1987 auf diese Programme stie"sen -- klar, da"s
  138. wir sie f"ur den Atari~ST implementieren wollten, und da"s die angepa"sten
  139. Programme als Share\-ware verbreitet werden sollten. Wegen der Form von
  140. WEB-Dateien und der Tatsache, da"s wir beide keine gro"sen Freunde von
  141. Pascal sind, kam uns beiden sofort der Gedanke, die Programme in die
  142. Programmiersprache C zu "ubersetzen. Also besorgten wir uns die entsprechenden
  143. B"ucher von Knuth, und tippten sie ab, wobei wir die Programme gleich in
  144. C "ubersetzten. Stefan implementierte \TeX, w"ahrend ich mich auf
  145. \mf\ st"urzte. Nach "uber einem Jahr Tippfehlersuche und Ausprobieren
  146. verschiedener C-Compiler waren im Sommer 1988 erste brauchbare Ergebnisse
  147. zu sehen. Inzwischen hat sich Turbo~C von Borland/Heimsoeth als der am besten
  148. geeignete Compiler herausgestellt, und es konnten noch einige Verbesserungen
  149. an der Benutzer\-ober\-fl"ache von \TeX\ und \mf\ vorgenommen werden. Die
  150. vorliegenden Versionen von \mf\ und \TeX\ sind das Ergebnis der
  151. langen Bem"uhungen, Knuths Programme f"ur Besitzer von Atari~ST Computern
  152. zug"anglich zu machen. Beide sind {\tt TRAP}- bzw.\ {\tt TRIP}-getestet,
  153. haben also nachgewiesen, da"s sie sich auch bei "`unm"oglichen"' Eingaben
  154. genau wie die Originale verhalten.
  155. \vfill
  156. %------------------------------ Der Autor ----------------------------------
  157. \section{Der Autor}
  158. An dieser Stelle m"ochte ich mich ganz kurz vorstellen. Geboren bin ich
  159. anno 1963 (zuf"alligerweise erhielt Donald Knuth in diesem Jahr auch seinen
  160. Doktortitel in Mathematik vom California Institute of Technology), und
  161. entdeckte schon in der Schule mein Interesse f"ur Computer, zun"achst an
  162. einem Tischrechner von WANG, der noch mit einem richtigen Kernspeicher
  163. ausgestattet war, und bei dem man mit Hilfe einer teuren Zusatztastatur
  164. sogar Buchstaben~(!) eingeben konnte, wenngleich diese auch nur selten
  165. richtig im Rechner ankamen. Nach diversen Zwischenschritten (CBM 3000,
  166. AIM-65, mein erster eigener Computer, und \hbox{C-64}) wurde ich 1985 schlie"slich
  167. stolzer Besitzer eines Atari~ST. Neben \mf\ bin ich zur Zeit auch noch
  168. mit einem Informatik-Studium besch"aftigt.
  169. Meine derzeitige Adresse ist:\label{adr}
  170. \begin{verse}
  171.    Lutz Birkhahn\\
  172.    F"urther Str.\ 6\\
  173.    W-8501 Cadolzburg 2\\
  174.    Deutschland\\[0.5\baselineskip]
  175.    Telefon: 0\,91\,03 / 28\,86
  176. \end{verse}
  177. Wer seine Registrierungsgeb"uhr zahlen m"ochte (Spenden werden
  178. nat"urlich auch angenommen), "uberweist den Betrag am besten auf eines
  179. der folgenden Konten:
  180. \begin{quote}
  181.    Kontonr.~3062\,25-852 beim Postgiroamt N"urnberg, BLZ~760\,100\,85
  182.    Kontonr.~533\,45\,37 bei der Vereinigten Sparkasse im Landkreis
  183.    F"urth, Bankleitzahl 762\,501\,10
  184. \end{quote}
  185. Mittels elektronischer Post (email) bin ich im Subnetz unter
  186. %A5 der Adresse
  187. {\tt lutz@bisun.nbg.sub.org}\label{mailboxen} erreichbar. Da s"amtliche
  188. Daten "uber private Telefonleitungen gehen und teilweise auch noch
  189. zus"atzliche "Ubertragungsgeb"uhren kosten (f"ur Senden {\em und
  190. Empfangen\/}!), bitte keine Riesenbriefe schicken oder zumindest vorher
  191. bei mir anfragen.
  192. %------------------------ Weitere Informationen ---------------------------
  193. \section{Weitere Informationen}
  194. In gro"sen Teilen des Z-Netzes und Fidonetzes sowie im Subnetz und Mausnetz
  195. gibt es ein \TeX-Forum (Z-Netz: /T-NETZ/TEX, Fido: TEX.GER, Subnetz: sub.tex,
  196. Maus: Gruppe TeX), das sowohl von Entwicklern und Experten als auch von
  197. Benutzern (Anf"anger und Fortgeschrittene) von \TeX\ und \mf\ f"ur den
  198. Informationsaustausch und Fragen genutzt wird. Wer einen Zugang zu einem
  199. der genannten Netze hat und auf dem laufenden bleiben will oder Fragen
  200. zu einem der Programme hat, sollte sich auf jeden Fall mal in diesem Forum
  201. umsehen. Dieses Forum ist nat"urlich nicht auf Atari-Benutzer beschr"ankt.
  202. Wer Zugang zum Internet oder Bitnet (EARN etc.) hat, kommt noch an
  203. viel mehr Informationen ran, als Stichworte seien hier nur die \TeX hax
  204. oder die deutsche Mailingliste tex-d-l@dearn genannt. Wer m"ochte, kann
  205. hier den ganzen Tag damit zubringen, Nachrichten "uber \TeX\ zu lesen.
  206. Neuerdings hat Stefan Lindner f"ur Modem-Besitzer auch einen eigenen
  207. \TeX-Server eingerichtet, der etliche Megabytes an \TeX-Makros,
  208. Zeichens"atzen f"ur \mf\ und Programmen (haupts"achlich f"ur den
  209. Atari~ST) bietet. Die Telefonnummer ist 09\,11~/~75\,85\,47,
  210. Parameter 1200--14400/8/N/1, Benutzername {\tt gast}.
  211. Von Stefan Lindner kann man zu "ahnlichen Konditionen wie bei \mf\ das
  212. be\-r"uhm\-te Schriftsatzprogramm \TeX\ (ebenfalls von Donald Knuth entwickelt)
  213. zusammen mit DVI-Ger"atetreibern f"ur die gebr"auchlichsten Dru"cker
  214. bekommen. Seine Adresse lautet:
  215. \begin{verse}
  216.    Stefan Lindner\\
  217.    Iltisstra"se 3\\
  218.    8510 F"urth\\[0.5\baselineskip]
  219.    Telefon: 09\,11~/~7\,59\,18\,86
  220. \end{verse}
  221. Ebenso sind \TeX{} und \mf{} von der Firma Neumann-Seidel GbR erh"altlich,
  222. n"aheres dazu im Abschnitt "uber die Shareware-Bedingungen auf Seite~%
  223. \pageref{seidel}.
  224. %****************************** Shareware **********************************
  225. \chapter{Shareware}
  226. %------------------------ Shareware-Bedingungen ----------------------------
  227. \section{Shareware-Bedingungen}
  228. Beide Disketten d"urfen (und sollen) unter den folgenden
  229. Bedingungen beliebig kopiert und weitergegeben werden:
  230. \begin{itemize}
  231. \item Es werden {\it alle\/} Dateien auf der Diskette kopiert.
  232. \item Diese Anleitung und die Programme \mf\ und \inimf\ werden nicht
  233.  ver"andert.
  234. \item Die Weitergabe erfolgt ausschlie"slich zu nichtkommerziellen Zwecken.
  235. \end{itemize}
  236. Kurz gesagt, ich m"ochte nicht, da"s unvollst"andige Versionen kursieren,
  237. oder da"s jemand mit diesen Programmen Geld verdient.
  238. Ich kann nat"urlich f"ur die gesamten Programme und die Daten keine
  239. Garantie geben, und auch keine eventuell auftretenden Sch"aden ersetzen
  240. (wenn also z.B. die Augen nicht mehr mitmachen, weil sie durch einen
  241. falschen Zeichensatz zu Tode erschreckt sind, dann bitte die Arztrechnung
  242. nicht an mich schicken). Ich habe jedenfalls versucht, alles so gut und
  243. richtig wie m"oglich zu machen.
  244. Jeder, dem diese Implementation von \mf\ gef"allt, und der die
  245. Programme "ofter verwendet, wird gebeten, 50,-- DM (au"serhalb Deutschlands
  246. wegen des h"oheren Portos 55,-- DM oder US-\$ 30 bar oder Euroscheck oder
  247. Order-Scheck) an meine auf Seite~\pageref{adr} angegebene Adresse zu schicken.
  248. Alternativ kann man eine registrierte Version von \mf\ auch von der Firma
  249. Neumann-Seidel GbR\label{seidel}, Hafenstra"se 16 in W-2305 Heikendorf beziehen. Das
  250. \mf\ zusammen mit den gedruckten Anleitungen zu \mf{} und zur \TeX-Shell
  251. kostet dort DM~65,--. Wer Stefan Lindners \TeX{} gleich mitbestellt, bekommt
  252. das Komplettpaket mit Anleitungen f"ur DM~129,--.
  253. Jeder registrierte Benutzer erh"alt folgenden Service:
  254. \begin{itemize}
  255. \item Die neueste Version (mit Seriennummer, dazu unten mehr) wird
  256.    zugeschickt.
  257. \item Telefon-Hotline: kostenlose Beratung registrierter Benutzer\footnote{%
  258.    Das soll nat"urlich nicht hei"sen, da"s nur registrierte Benutzer
  259.    bei mir anrufen d"urfen. "Uber Lob, Kritik, Verbesserungsvorschl"age
  260.    oder gar selbstgeschriebene Programme zu \mf\ oder Ideen dazu freue
  261.    ich mich immer. Nur kann es passieren, da"s ich bei Fragen, zu deren
  262.    Beantwortung ich selbst erstmal etwas Zeit investieren mu"s, zun"achst
  263.    frage, ob der Anrufer registriert ist.}.
  264. \item Registrierte Benutzer k"onnen bei mir f"ur 30,-- DM (oder US-\$ 20)
  265.    den kompletten Quellcode (in C) zu \mf\ anfordern, auch hier ist ein
  266.    Update im Preis enthalten.
  267. \item Das erste Update wird kostenlos zugeschickt (wo kriegt man heute noch
  268.    so einen Service?), alle weiteren Updates werden schriftlich
  269.    bekanntgegeben, registrierte Benutzer erhalten diese dann gegen
  270.    voraussichtlich ca.\ 10,-- DM pro Diskette.
  271. \end{itemize}
  272. %------------------------------ Seriennummer -------------------------------
  273. \section{Seriennummer}
  274. In jeder \mf-Version ist eine Seriennummer enthalten. Wenn jemand (im
  275. folgenden A genannt) den oben genannten Betrag bezahlt, erh"alt er daf"ur
  276. eine Version mit einer neuen Seriennummer. Diese Nummer wird bei mir 
  277. registriert. Wenn er nun diese registrierte Version weitergibt (und das
  278. soll er ja), und einer der Empf"anger dieser Kopie zahlt seinerseits die
  279. Sharewaregeb"uhr, so erh"alt A davon 15,--~DM (5,--~DM ab 1.1.1993)
  280. als "`Pr"amie"' f"ur die Verbreitung des Programmes.
  281. Wenn jemand allerdings mehr als drei"sigmal die Belohnung kassiert, gehe ich
  282. davon aus, da"s es sich um einen kommerziellen Software-Vertrieb handelt,
  283. und gebe an diesen keine Belohnungen mehr weiter.
  284. Mit diesem Konzept will ich einerseits die Verbreitung von \mf\ etwas
  285. beschleunigen, und andererseits versuchen, m"ogliche Anfangsschwierigkeiten
  286. durch pers"onlichen Kontakt unter den Benutzern zu verringern (damit ein
  287. Benutzer, der weit entfernt von mir wohnt, bei Problemen mit \mf\ zun"achst
  288. zum vermutlich n"aher gelegenen Bekannten gehen kann, von dem er die Kopie
  289. hat, bevor er bei mir anruft, um das Problem zu l"osen. Vieles l"a"st sich
  290. eben bei einem pers"onlichen Gespr"ach viel leichter und billiger l"osen
  291. als "uber eine lange Telefonleitung).
  292. Damit ich die "`Pr"amie"' weiterleiten kann, bitte bei der Registrierung
  293. unbedingt die Seriennummer der bisher benutzten Version (erscheint bei
  294. jedem Start von \mf\ in der zweiten Zeile auf dem Bildschirm) mit angeben.
  295. Falls man bisher noch keine Version besa"s (ist mir im Moment allerdings
  296. noch unklar, wie man dann an diese Anleitung kommen kann), sollte man
  297. dies bitte deutlich vermerken. Am besten druckt man die Datei
  298. \file{FORMULAR.TXT} auf einem Drucker aus und macht die entsprechenden
  299. Eintragungen oder sendet das ausgef"ullte Formular an die auf
  300. Seite~\pageref{mailboxen} angebene email-Adresse.
  301. %******************************* Installation ******************************
  302. \chapter{Installation}
  303. Alle Hinweise in diesem Kapitel sind lediglich Vorschl"age f"ur Benutzer,
  304. die bis jetzt noch wenig Erfahrung mit \mf\ haben. Durch die Verwendung
  305. einer "`Setup-Datei"' kann man die Programme und Daten fast
  306. beliebig auf seinen Speichermedien verteilen. 
  307. Da die kompletten Sourcecodes der Zeichens"atze insgesamt "uber
  308. 700~KByte Umfang besitzen, war es n"otig, einige Zeichens"atze mit
  309. dem Programm {\mc LHARC} zu komprimieren. Dieses Programm befindet sich
  310. ebenfalls auf Diskette~2. Bez"uglich der Weitergabe dieses Programmes
  311. verweise ich auf die dortige Anleitung.
  312. %------------------------ Installation auf Festplatte ----------------------
  313. \section{Installation auf Festplatte}
  314. Besitzer einer Festplatte sind (nicht nur) bei der Installation fein raus:
  315. Sie starten einfach das Programm \file{INSTALL.PRG} auf Diskette~1. Da
  316. dies ein allgemein verwendbares Programm ist, fragt es erst einmal nach
  317. einer Datei, in der die genauen Installationsanweisungen stehen. F"ur
  318. \mf\ w"ahlt man hier die Datei \file{METAFONT.INS} aus. Nun kann man
  319. ausw"ahlen, ob man nur die Grundinstallation durchf"uhren will oder auch
  320. die \TeX-Shell installieren will, und ob man die Zeichens"atze komprimiert
  321. auf der Platte stehen haben m"ochte oder lieber ausgepackt (schneller,
  322. aber daf"ur mehr Platzbedarf).
  323. Wenn man nun den OK-Button anklickt, wird man noch nach dem Ziel gefragt,
  324. wo das \mf-System installiert werden soll (hier wird der Pfad angegeben,
  325. wo dann das Programm selbst und alle Unterordner stehen sollen). Dann
  326. kann man sich zur"ucklehnen und der Installation zuschauen, nur einmal
  327. wird man noch aufgefordert, die zweite Diskette einzulegen.
  328. Man kann "ubrigens auch die Disketten in eine RAM-Disk oder auf die
  329. Festplatte kopieren, dann geht die Installation noch schneller. Man mu"s
  330. dabei nur beachten, da"s die Installationsdatei \file{METAFONT.INS}
  331. auch von Platte bzw.\
  332. RAM-Disk geladen wird. Die Auf"|forderung nach einem Diskettenwechsel
  333. beantwortet man einfach mit einem Tastendruck (es mu"s {\bf nicht} die
  334. Festplatte oder RAM-Disk ausgewechselt werden!).
  335. Wenn das Programm fertig ist, steht \mf\
  336. gebrauchsfertig auf der Platte, die Setup-Datei ist auch bereits an die
  337. "ortlichen Gegebenheiten angepa"st. Lediglich bei der \TeX-Shell m"ussen
  338. noch die Pfade eingestellt werden (siehe dazu die Anleitung der \TeX-Shell).
  339. Ein weiterer Vorteil des Installationsprogrammes ist die automatische
  340. "Uberpr"ufung der Dateien mittels CRC-Pr"ufsummen, und zwar nicht nur
  341. beim Extrahieren (Auspacken) von Dateien aus LHARC- oder Larc-Dateien,
  342. sondern auch beim Kopieren.
  343. %------------------- Installation auf Disketten-Laufwerk -------------------
  344. \section{Installation auf Disketten-Laufwerk}
  345. F"ur eigene Experimente mit \mf, bei denen die CMR-Sourcecodes nicht
  346. ben"otigt werden, kann die Programmdiskette (am besten nat"urlich eine
  347. Sicherheitskopie davon) ohne spezielle Installation verwendet werden.
  348. Benutzer, die nur einseitige Laufwerke besitzen, k"onnen sich (bei einem
  349. Freund mit zweiseitigem Laufwerk) eine Arbeitsdiskette zusammenstellen,
  350. auf der nur die Dateien \file{METAFONT.PRG}, \file{METAFONT.RSC},
  351. \file{MFSETUP} und
  352. \file{PLAIN.BSE} stehen. Es bleiben dann noch etwas mehr als 100~KByte
  353. "ubrig, in denen Eingabedateien (\verb|*.MF|) sowie LOG-, GF- und
  354. TFM-Dateien untergebracht werden k"onnen. Routinierte Diskjockeys oder
  355. Besitzer von zwei Laufwerken k"onnen in der Setup-Datei auch
  356. Laufwerk~\verb|B:\|
  357. angeben (z.B. bei den {\tt inputpaths}). Wer noch etwas Platz im RAM hat,
  358. kann eine kleine Ramdisk (Minimum ca.\ 50~KByte) installieren, und in der
  359. Setup-Datei {\tt logpath}, {\tt gfpath} oder {\tt tfmpath} (auf diese
  360. Dateien wird in der Regel w"ahrend des gesamten Programmlaufes etwas
  361. geschrieben) auf die Ramdisk setzen.
  362. Um komplette Zeichens"atze f"ur \TeX\ zu erzeugen, mu"s man schon etwas
  363. mehr mit dem Diskettenplatz jonglieren. Nachdem es aber inzwischen
  364. m"oglich ist, auch komprimierte Dateien direkt mit \mf\ zu lesen,
  365. ist es durchaus m"oglich (wenn auch nicht komfortabel), mit nur
  366. einem einseitigen Laufwerk zu arbeiten. Wer tats"achlich so enge
  367. Platzverh"altnisse hat und deswegen mit der Installation nicht klar
  368. kommt, m"oge sich bei mir melden, dann versuche ich, eine arbeitsf"ahige
  369. Verteilung der Dateien zu finden.
  370. Insgesamt braucht man ca.\ 1~MByte Speicher %***** <1 MByte!!!
  371. auf Disketten und
  372. evtl.\ Ramdisk, um das Programm, die Base-Datei und alle Zeichensatz-Sourcen
  373. zu speichern. Es w"urde hier wohl zu weit f"uhren, f"ur jede m"ogliche
  374. Rechnerkonfiguration (davon gibt es schlie"slich sehr viele verschiedene)
  375. die beste Auf"|teilung anzugeben, schon allein deswegen, weil es auch auf
  376. den Anwendungsfall ankommt, was man als {\em beste\/} Auf"|teilung ansehen
  377. kann. Ich denke jedoch, da"s es mit diesen Informationen jedem Benutzer
  378. m"oglich sein sollte, eine f"ur seine Anwendung passende Verteilung der
  379. Daten zu finden (wenn nicht, gibt es ja immer noch die "`Telefon-Hotline"'
  380. oder andere \mf-Benutzer, die solche Arbeiten schon hinter sich haben).
  381. %-------------------------- Wichtige Hinweise --------------------------
  382. \section{Wichtige Hinweise}
  383. Im folgenden ein paar Hinweise zum Betrieb des Programmes, die sich im
  384. Laufe der Zeit angesammelt und keinen besseren Platz in dieser Anleitung
  385. gefunden haben.
  386. \begin{itemize}
  387. \item Wenn man die Version~2.0 von Tempus verwendet und dort die Parameter
  388.   abspeichern will, so sollte man das Programm dazu unbedingt vom Desktop
  389.   aus starten. Wenn man Tempus aus der \TeX-Shell (oder einer anderen Shell)
  390.   startet und dann "`\verb|Param. & sichern...|"' aufruft, werden die
  391.   Parameter {\em nicht} in Tempus, sondern in der {\em Shell} abgespeichert!
  392.   Die Shell kann man nach so einer Aktion unbesorgt in den Desktop-Papierkorb
  393.   schmei"sen. Ab Tempus Version~2.05 ist dieser Fehler beseitigt worden.
  394. \item Mit einigen `mode'-Definitionen (z.B. \verb|stlaser| f"ur den
  395.   Atari-Laser"-dru"cker {\mc SLM804}) in der Datei \file{atari.mf}
  396.   gibt es manchmal Probleme mit CMR-Zei\-chen\-s"atzen:
  397.   \mf\ meldet den Fehler \verb|"! Bad pos..."| und an\-schlie"send
  398.   \verb|"! Strange path..."|.
  399.   Dieser Fehler liegt nicht an der \mf-Implementation, und auch die
  400.   CMR-Sourcecodes sind korrekt. Eine genauere Untersuchung ergab, da"s die
  401.   negativen `{\tt blacker}'-Werte in der Datei \file{ATARI.MF} (bzw.\
  402.   \file{modes.mf}) schuld sind. Knuth
  403.   warnt in seinem Buch "`Computer Modern Typefaces"' (Computers \&
  404.   Typesetting, Volume~E) auf Seite~7 ausdr"ucklich vor einem
  405.   $\hbox{\tt blacker} < 0$ :
  406.   \begin{quote}
  407.      ``Trouble might also arise if the device-specific parameter called
  408.      {\it blacker\/} is made negative.''
  409.   \end{quote}
  410.   Leider sehen auf manchen Ger"aten die Zeichens"atze nun mal am besten aus,
  411.   wenn `{\tt blacker}' negativ ist. Deswegen wurde mittels der Datei
  412.   \file{cmlocal.mf} eine Behandlung des Problems eingef"uhrt. Es wird
  413.   zwar noch ein Fehler gemeldet, aber zumindest ist der Zeichensatz noch
  414.   verwendbar, wenn dieser Fehler aufgetaucht ist. Eine genauere Erkl"arung
  415.   des Problems und der zur L"osung verwendeten Methode findet man in
  416.   der Datei \file{doc}\bs\file{bad\_pos.doc}.
  417. \end{itemize}
  418. %******************** METAFONT auf dem Atari ST ****************************
  419. \chapter{\protect\mf\ auf dem Atari ST}
  420. \mf\ wurde auf dem ST als \gem-Programm realisiert. S"amtliche Textausgaben
  421. gehen in ein Text-Fenster, dort werden auch die Eingaben des Benutzers
  422. vorgenommen. Ein zweites Fenster dient der Ausgabe von Grafik. Dieses wird
  423. aber erst auf Anforderung ge"offnet, z.B. mit den \mf-Befehlen {\tt openit}
  424. oder {\tt showit}. Wenn man bei der Erzeugung eines Zeichensatzes jedes
  425. Zeichen sehen will, bevor es in die GF-Datei geschrieben wird, kann man
  426. dies mit dem \mf-Befehl {\tt screenchars} einschalten. Mit {\tt
  427. screenstrokes} kann man jeden einzelnen "`Pinselstrich"' auf dem Bildschirm
  428. sehen. F"ur die weiteren Grafikbefehle sei auf das \mf book~\cite{mfbook}
  429. verwiesen. F"ur Spezialanwendungen kann man die \gem-Umgebung in \mf\
  430. auch deaktivieren, siehe dazu die Beschreibung der Environment-Variablen
  431. \verb|MF_NOGEM| in Abschnitt~\ref{environment}.
  432. Man kann die Fenster jederzeit vergr"o"sern, verkleinern oder verschieben,
  433. auch w"ahrend \mf\ besch"aftigt ist. Bei l"angeren Dateioperationen (z.B.
  434. Laden der Base-Datei) oder komplizierten Berechnungen kann es jedoch
  435. vorkommen, da"s \mf\ nicht sofort auf die Aktivit"aten des Benutzers
  436. reagiert, soda"s man entsprechend l"anger auf die Maustaste dr"ucken mu"s.
  437. In den meisten F"allen zeigt \mf\ diesen Umstand mit einer "`flei"sigen
  438. Biene"' als Mauscursor an.
  439. Die Fenstergr"o"sen und -Positionen zu Beginn des Programmes k"onnen durch
  440. verschiedene Environment-Variablen eingestellt werden, siehe dazu
  441. Abschnitt~\ref{environment}.
  442. Die Arbeit von \mf\ kann man durch gleichzeitiges Dr"ucken der Tasten
  443. {\mc CONTROL} und {\mc ALTERNATE} unterbrechen, man landet dann in der
  444. normalen Feh\-ler\-be\-hand\-lungs-Rou\-ti\-ne, wo man z.B. Endlosschleifen untersuchen
  445. kann, Variablen abfragen oder das Programm beenden kann. Aus den gleichen
  446. Gr"unden wie im vorigen Absatz mu"s man die beiden Tasten eventuell etwas
  447. l"anger gedr"uckt halten. \mf\ unterbricht n"amlich nur dann seine Arbeit,
  448. wenn es auch in der Lage ist, zus"atzliche Eingaben des Benutzers zu
  449. verdauen. Trotzdem ist es zum Beispiel bei der Untersuchung von Variablen
  450. ratsam, die Aktivit"aten vor \mf\ zu "`verstecken"', damit man nichts
  451. durcheinanderbringt. Dies kann man durch das {\tt hide}-Makro erreichen.
  452. Um z.B. den Inhalt der Variablen $x$ anzuzeigen, gibt man folgendes ein:
  453. \begin{verbatim}
  454.    I hide(show x)
  455. \end{verbatim}
  456. W"ahrend \mf\ auf eine Eingabe wartet, kann man es durch Dr"u"cken der
  457. {\mc ESC}-Taste abbrechen. Wenn man in der daraufhin erscheinenden
  458. Alarm-Box auf {\tt abort} klickt, riskiert man allerdings unvollst"andige
  459. GF- und TFM-Dateien!
  460. %------------------------- Komprimierte Dateien --------------------------
  461. \section{Komprimierte Dateien}\label{larc}
  462. Wenn man wenig Speicherplatz zur Verf"ugung hat (und wer hat das nicht?)
  463. und daf"ur eine etwas geringere Geschwindigkeit in Kauf nehmen
  464. will, kann man die \mf-Eingabedateien in komprimierter Form speichern.
  465. \mf\ ist in der Lage, mit dem Programm Larc komprimierte Dateien
  466. (\verb|*|\file{.lzs}) einzulesen. Dieses Dateiformat ist "ahnlich dem
  467. bekannten \verb|*|\file{.lzh}-Format von LHarc (genauer gesagt ist es ein
  468. Vorg"anger davon, und neuere LHarc-Versionen sind auch in der Lage,
  469. dieses Format zu verwenden), mit dem wesentlichen Unterschied, da"s
  470. es erheblich schneller expandiert werden kann als \file{lzh}-Dateien.
  471. Um \mf\ mitzuteilen, welche Larc-Archive es durchsuchen soll,
  472. mu"s ihm lediglich im Suchpfad f"ur die Eingabepfade ({\tt inputpaths},
  473. siehe dazu den Abschnitt~\ref{setup}) der Name der \file{lzs}-Dateien
  474. genannt werden.
  475. %--------------------------- Setup-Datei -------------------------------
  476. \section{Setup-Datei}\label{setup}
  477. In der Setup-Datei stehen s"amtliche Pfade, auf die \mf\ zugreifen kann.
  478. Wenn in der Kommandozeile nichts anderes angegeben wurde, sucht \mf\
  479. nach der Datei \file{MFSETUP} im aktuellen Ordner.
  480. Die Syntax f"ur die Pfad-Definitionen ist bis auf die Bezeichnung der
  481. Schl"usselw"orter genau die gleiche wie beim \TeX\ von Stefan Lindner. Es sind
  482. also zwischen den einzelnen W"ortern (Token) beliebig viele Leerzeichen,
  483. Returns, Tabulatoren und Kommentare erlaubt. Kommentare werden mit einem
  484. {\tt`\%'} eingeleitet
  485. und gehen bis zum Zeilenende (wie bei \TeX\ und \mf\ "ublich). Auf der
  486. linken Seite vom {\tt `='} d"urfen folgende Schl"usselw"orter stehen
  487. (in Klammern ist jeweils angegeben, welchen Pfad \mf\ verwendet, wenn in
  488. der Setup-Datei nichts definiert ist). Wenn nichts anderes angegeben ist,
  489. gelten die Pfade sowohl f"ur \mf\ als auch f"ur \inimf.
  490. \begin{description}
  491. \item [\tt poolfile] gibt an, von wo \inimf\ den String-Pool l"adt. 
  492.   Dies mu"s ein g"ultiger Dateiname sein, er darf also insbesondere nicht
  493.   mit einem Backslash (\verb|\|) enden, und die Extension mu"s bei Bedarf
  494.   explizit angegeben werden. Dieser Pfad gilt nur f"ur \inimf; \mf\ ignoriert
  495.   ihn. (\bs\file{mf}\bs\file{bases}\bs\file{mf\_pool})
  496. \item [\tt defaultbase] ist die Base-Datei, die \mf\ l"adt, wenn der
  497.   Benutzer nichts anderes angegeben hat. Auch dies mu"s genauso wie
  498.   {\tt poolfile} ein g"ultiger Dateiname sein.
  499.   (\bs\file{mf}\bs\file{bases}\bs\file{plain.bse})
  500. \item [\tt basepaths] dort wird die Base-Datei gesucht, wenn eine
  501.   angegeben wurde. Wenn keine angegeben wurde, l"adt \inimf\ gar keine
  502.   Base-Datei, w"ahrend \mf\ die unter {\tt defaultbase} genannte verwendet.
  503.   (\bs\file{mf}\bs\file{bases}\bs)
  504. \item [\tt inputpaths] besteht in der Regel aus einer Liste von
  505.   Pfaden, in denen nach Input-Dateien (\verb|*|\file{.MF}) gesucht werden soll.
  506.   (\bs\file{mf}\bs\file{inputs}\bs)
  507. \item [\tt gfpath]       in diesen Ordner werden die GF-Dateien geschrieben.
  508.   (\bs\file{mf}\bs)
  509. \item [\tt tfmpath]      ist der Ort, wo die TFM-Datei abgelegt wird.
  510.   (\bs\file{mf}\bs)
  511. \item [\tt logpath]      dorthin kommt die LOG-Datei. (\bs\file{mf}\bs)
  512. \item [\tt dumppath]     ist der Ordner, in den \inimf\ die Base-Datei
  513.   schreibt, wenn `dump' befohlen wurde. (\bs\file{mf}\bs\file{bases}\bs)
  514. \end{description}
  515. Auf der rechten Seite des {\tt `='} steht jeweils der Pfad, in dem nach der
  516. entsprechenden Datei gesucht wird. Dieser Pfad sollte in der Regel
  517. absolut angegeben werden, damit \mf\ die Dateien auch dann findet, wenn
  518. es von einem anderen Directory oder Laufwerk aus gestartet wurde. Ein
  519. Punkt (`\file.') ist auch ein g"ultiger Pfad, er bezeichnet das aktuelle
  520. Directory. Wenn dies nicht explizit in der Setup-Datei angegeben ist,
  521. sucht \mf\ {\em nicht\/} automatisch im aktuellen Directory nach
  522. einer Datei. Mit Ausnahme von {\tt poolfile} und {\tt defaultbase} 
  523. (dies sind ja Dateinamen und keine Pfade) d"urfen alle Pfade wahlweise
  524. mit oder ohne `\verb|\|' am Ende angegeben werden. Bei {\tt
  525. basepaths} und {\tt inputpaths} d"urfen mehrere Pfade, jeweils getrennt durch
  526. ein Komma, definiert werden. \mf\ durchsucht dann in der vorgegebenen
  527. Reihenfolge alle Pfade, bis es die Datei gefunden hat. Jede
  528. Pfad-Definition mu"s mit einem Strichpunkt abgeschlossen werden.
  529. Zwischen Gro"s- und Kleinschreibung wird nicht unterschieden.
  530. Wie in Abschnitt~\ref{larc} bereits angedeutet, kann man bei den
  531. {\tt inputpaths} auch komprimierte Dateien (Larc-Archive) angeben, diese
  532. m"ussen die Extension \file{.lzs} besitzen. Im Prinzip werden die
  533. Larc-Archive von \mf\ wie ein Dateiverzeichnis angesehen, allerdings
  534. mit der Einschr"ankung, da"s keine Unterverzeichnisse verwendet werden
  535. d"urfen (im Larc-Archiv d"urfen also nur Dateinamen, keine Pfade
  536. abgespeichert werden).
  537. Um zu vermeiden, da"s der Benutzer mit steigender Anzahl an
  538. \mf-Zeichens"atzen eine undurchschaubar lange Liste an {\tt inputpaths}
  539. angeben mu"s, wurde au"serdem die M"og"-lichkeit vorgesehen, sogenannte
  540. Wildcards zu verwenden. Dazu k"onnen in den {\tt inputpaths} die
  541. \gemdos-"ublichen Zeichen Stern und Fragezeichen (\verb|*|, \verb|?|)
  542. mit der ebenso "ublichen Bedeutung (beliebig viele Zeichen bzw. genau
  543. ein Zeichen, nur in letztem Pfad-Teil erlaubt, etc.) verwendet werden.
  544. Bei Pfaden mit Wildcards (und nur da) kommt es auch darauf an, ob der
  545. Pfad mit einem Backslash (\verb|\|) abgeschlossen ist oder nicht: Pfade
  546. mit Backslash am Ende betreffen n"amlich ausschlie"slich Directories,
  547. {\bf keine} Archive. Damit ist es m"oglich, in einem Verzeichnis, das
  548. sowohl Unterverzeichnisse als auch \file{lzs}-Archive enth"alt, mit
  549. \verb|...\*|\file.\verb|*\| zuerst alle Unterverzeichnisse und dann mit
  550. \verb|...\*|\file{.lzs} alle Archive auszuw"ahlen, so da"s zuerst die
  551. ausgepackten Dateien in den Verzeichnissen untersucht werden, und erst,
  552. wenn dort nichts gefunden wurde, auf die komprimierten Archive
  553. ausgewichen wird.
  554. %--------------------------- Kommandozeile ---------------------------------
  555. \section{Kommandozeile}
  556. \mf\ wurde so implementiert, da"s es als \gem-Programm vom Desktop aus
  557. m"oglichst einfach gestartet werden kann. Viele Benutzer verwenden jedoch
  558. lieber eine Shell, die ihnen manche Tipparbeit ersparen kann. Als erstes
  559. sei hier die hervorragende \TeX-Shell von Klaus Heidrich, Robert Kie"sling
  560. und Reinhard Maluschka genannt, die dem Paket ebenfalls beiliegt.
  561. Mancher bevorzugt aber auch textorientierte Shells, die meist an UNIX oder
  562. MS-DOS angelehnt sind. Um die Verwendung solcher Shells (sowohl \gem- als
  563. auch textorientierte) zu erm"oglichen,
  564. wurden einige Optionen definiert, die in der Kommandozeile angegeben werden
  565. k"onnen. Parameter ({\it Dateiname\/} bzw.\ {\it Zahl\/}) d"urfen durch ein
  566. Leerzeichen von der Option getrennt werden. Verschiedene Optionen
  567. {\em m"ussen\/} durch ein Leerzeichen voneinander getrennt werden.
  568. \begin{description}
  569. \item[-j] \quad Wenn \mf\ seine Arbeit beendet hat, wird normalerweise ein
  570.    akustisches Weck-Signal ausgegeben und gewartet,
  571.    bis der Benutzer durch einen Tastendruck signalisiert, da"s er wieder
  572.    aufgewacht ist und alle wichtigen und unwichtigen Mitteilungen auf dem
  573.    Bildschirm gelesen hat. Wenn man jedoch mit der \TeX-Shell oder einer
  574.    Batchdatei z.B. w"ahrend der Nacht gleich mehrere Zeichens"atze
  575.    hintereinander erzeugen will, w"are es unpraktisch, wenn man alle zehn
  576.    Minuten zum Computer rennen m"usste, nur um auf eine Taste zu dr"ucken.
  577.    Das kann der Computer schlie"slich auch selber machen. Mit der Option
  578.    {\tt -j} kann man \mf\ mitteilen, da"s es die Nacht- (oder Tag-) Ruhe
  579.    nicht durch Gebimmel unterbrechen soll, und da"s es am Ende nicht auf
  580.    eine Taste warten soll, da sowieso niemand die Kommentare auf dem
  581.    Bildschirm lesen will.
  582.    Wenn w"ahrend des \mf-Laufes ein fataler Fehler oder Speichermangel
  583.    auftritt, wird die Sache etwas komplizierter. Die folgende
  584.    Beschreibung kann ohne Probleme "ubersprungen werden, wenn man beachtet,
  585.    da"s der \verb|nonstopmode| (oder gar \verb|batchmode|) nur dann
  586.    eingeschaltet sein sollte, wenn \mf\ l"angere Zeit unbeaufsichtigt
  587.    (z.B. "uber Nacht) laufen soll. Falls bei einem solchen "`Batchlauf"'
  588.    Probleme auftauchen, sollte der erste Schritt darin bestehen, den
  589.    \verb|nonstopmode| wieder auszuschalten (\TeX-Shell: siehe Dialogbox
  590.    im \mf-Teil unter "`\verb|P zus. Parm.|"')!
  591.    Bei fatalen Fehlern und Speicherproblemen (R"uckgabewerte 3 und 6) wartet
  592.    \mf\ auf einen Tastendruck, auch wenn die "`Silent-Option"' \verb|-j|
  593.    aktiviert wurde. Dies l"a"st sich nur dadurch vermeiden, da"s man \mf\
  594.    im \verb"nonstopmode" oder \verb"batchmode" laufen l"a"st (das sind
  595.    eingebaute \mf-Befehle). Das kann zum Beispiel dann sinnvoll sein, wenn
  596.    man den Rechner "uber Nacht laufen l"a"st, und die Shell auch bei fatalen
  597.    Fehlern (z.B. mehr als 100 normale Fehler, capacity exceeded, aber auch
  598.    Platte voll, nicht gen"ugend Speicher!) weitermachen soll. Leider ist es
  599.    bei manchen "`fatalen Fehlern"' nicht m"oglich, die Fehlerursache in die
  600.    Logdatei zu schreiben (z.B. wenn die Platte voll ist), so da"s im
  601.    \verb|nonstopmode| oder \verb|batchmode| der nur auf dem Bildschirm
  602.    erscheinende Fehlerhinweis sofort wieder verschwindet. In diesem Fall
  603.    sollte man (z.B. am n"achsten Morgen) den entsprechenden Zeichensatz
  604.    nochmal unter Aufsicht und ohne \verb|nonstopmode| erzeugen, so da"s man
  605.    die Fehlermeldung auf dem Bildschirm betrachten kann.
  606.    Fatale Fehler, die bereits unmittelbar beim Programmstart auftreten (z.B.
  607.    Fehler in Setup-Datei, Speichermangel) lassen sich jedoch auch mit einem
  608.    \verb|nonstopmode| oder \verb|batchmode| nicht "uberspringen, weil die
  609.    entsprechenden \mf-Befehle zu diesem Zeitpunkt noch gar nicht ausgewertet
  610.    sind. In diesen F"allen ist es aber meistens sowieso nicht sehr sinnvoll,
  611.    noch weiterarbeiten zu wollen, da sie auch bei jedem weiteren
  612.    Programmstart wieder auftreten w"urden.
  613. \item[-s {\it Dateiname\/}] \quad \mf\ soll die Pfaddefinitionen aus der
  614.    Datei {\it Da\-tei\-na\-me\/} lesen. Ohne Angabe dieser Option sucht \mf\ nach
  615.    der Datei \file{MFSETUP} im aktuellen Directory. Wenn eine Setup-Datei
  616.    nicht gefunden wird, dann werden die im vorigen Abschnitt angegebenen
  617.    Standardpfade verwendet. Bei Verwendung der \TeX-Shell in der momentanen
  618.    Version empfehle ich jedoch, immer die Datei \file{MFSETUP} zu verwenden,
  619.    und dort auch alle Pfade zu definieren, sonst kann es zu Problemen im
  620.    Zusammenspiel der verschiedenen Programme kommen (in zuk"unftigen
  621.    Versionen der \TeX-Shell wird es vielleicht ein Telepathie-Modul geben,
  622.    das die Gedanken des Benutzers liest und daraus die gew"unschten
  623.    Pfade ableitet\dots).
  624. \item[-e {\it Zahl\/}] \quad Bei Verwendung der \TeX-Shell ist es durch diese
  625.    Option m"oglich, direkt aus der Fehlerbehandlung in \mf\ durch Eingabe
  626.    von `{\tt e}' einen Editor zu starten, der sofort die fehlerhafte Datei
  627.    l"adt und in die entsprechende Zeile springt (sofern der Editor "ahnlich
  628.    wie Tempus Dateiname und Zeilennummer in der Kommandozeile akzeptiert).
  629.    Wie funktioniert nun das Ganze? \mf\ interpretiert die {\it Zahl\/} als
  630.    Adres\-se im Hauptspeicher und erwartet dort einen Speicherbereich von
  631.    mindestens 270 Zeichen, der mit dem nullterminierten String
  632.    `\verb|TEXSHELL|' vorbesetzt ist. Wenn der Benutzer nun eine Fehlermeldung
  633.    mit `{\tt e}' beantwortet, schreibt \mf\ den Namen der gerade bearbeiteten
  634.    Datei und durch ein Leerzeichen davon getrennt die aktuelle Zeilennummer
  635.    in diesen Speicherbereich (dabei wird die Zeichenfolge \verb|"TEXSHELL"|
  636.    "uberschrieben). Diese Informationen kann das aufrufende Programm
  637.    auswerten und anschlie"send den Editor starten.
  638. \item[-w {\it Zahl\/}]
  639. \item[-h {\it Zahl\/}] \quad Diese beiden Werte geben die Breite
  640.    und H"ohe des Grafik-Puffers in Pixeln an. Standard ist 640 mal
  641.    400 Pixel. Siehe dazu auch die Beschreibung der beiden Environment-Va\-ria\-blen
  642.    \env{MF\_SCREENWIDTH} und \env{MF\_SCREENHEIGHT} in Abschnitt~\ref{environment}.
  643.    Wenn sowohl Environment-Va\-ria\-ble als auch die Kommando"-zeilen-Option
  644.    angegeben sind, werden die Werte aus der Kommandozeile verwendet.
  645. \end{description}
  646. Wenn man eine Option eingibt, die \mf\ nicht kennt, wird eine Hilfsseite
  647. ("`Usage"') ausgegeben, in der nochmal die genaue Verwendung der Optionen
  648. erkl"art ist.
  649. %A5 Man kann \mf\ entweder als \gem-Programm oder durch "Andern
  650. %A5 der File-Extension auf \file{.ttp} oder \file{.tos} als \tos-Programm starten,
  651. Man kann \mf\ entweder als \gem-Programm starten oder durch "Andern
  652. der File-Extension auf \file{.ttp} oder \file{.tos} als \tos-Programm,
  653. wobei dann die gesamte Text-Ein/Ausgabe "uber \gemdos\ l"auft
  654. und somit auch etwas schneller als "uber \gem. Da die Erkennung des
  655. eigenen Programmnamens nicht hundertprozentig sicher ist, kann man
  656. das auch "uber die Environment-Variable \env{MF\_NOGEM} umschalten,
  657. mehr dazu in Abschnitt~\ref{environment}.
  658. Zus"atzlich zu den eben beschriebenen Optionen kann man bereits in der
  659. Kommandozeile eine Startzeile eingeben. Doch dazu erstmal eine Erkl"arung,
  660. was mit Startzeile gemeint ist. Wenn \mf\ vom Desktop aus gestartet
  661. wird, meldet es sich mit zwei Sternen (`$**$'). Damit l"a"st es erkennen,
  662. da"s es auf die Eingabe der Startzeile wartet (die normale Eingabezeile
  663. beginnt mit einem einfachen Stern). Die Besonderheiten, die f"ur die
  664. Startzeile gelten, werden im Kapitel~\ref{kap-erste} n"aher
  665. erl"autert. Diese Startzeile kann man nun bereits in der Kommandozeile
  666. angeben, und zwar {\em nach\/} den Optionen. Es w"are zwar sehr ungew"ohnlich,
  667. aber falls die Startzeile zuf"allig mit einem Minuszeichen (`-') beginnen
  668. sollte, mu"s man diese erstmal durch zwei Minuszeichen von den Optionen
  669. abtrennen. Eine Kommandozeile sieht also ganz allgemein so aus:
  670. $$\hbox{\file{METAFONT.PRG} [{\it Optionen\/}] [-{}-] [{\it Startzeile\/}]}$$
  671. Falls man die Startzeile bereits in der Kommandozeile angibt, sollte man
  672. beachten, da"s manche Shells zun"achst alle Buchstaben in Gro"sbuchstaben
  673. umwandeln, w"ahrend die Kommandos in \mf\ in der Regel klein geschrieben
  674. sind (die bekannteste Shell mit diesem Verhalten ist wohl der \gem-Desktop,
  675. der allerdings f"ur \gem-Programme normalerweise keine Kommandozeile
  676. vorsieht). Also entweder eine "`vern"unftige"' Shell verwenden oder die
  677. Startzeile erst in \mf\ (nach den zwei Sternen) eingeben.
  678. Da in \mf\ der Backslash (`\bs') als Sonderzeichen definiert ist, darf er
  679. in Datei\-na\-men in der Regel nicht verwendet werden (Ausnahmen: wenn \mf\ den
  680. Benutzer explizit zur Eingabe eines Dateinamens auffordert sowie bei der
  681. `{\tt -s}'-Option). Um Dateien
  682. trotzdem mit einem Pfad versehen zu k"onnen, wurde der einfache
  683. Schr"agstrich (`/') als Ersatzzeichen gew"ahlt (man ist damit auch dem
  684. Filesystem von UNIX ein kleines -- wenn auch unbedeutendes -- St"uck n"aher).
  685. Vor dem "Offnen einer
  686. Datei wird dieses Zeichen wieder in einen Backslash zur"uckverwandelt,
  687. damit \gemdos\ korrekt arbeiten kann. Generell l"a"st sich dazu aber sagen,
  688. da"s man zumindest in den Eingabedateien auf Pfadangaben m"oglichst
  689. verzichten sollte, denn portabel ist sowas nat"urlich nicht. Schon der
  690. Nachbar hat auf seinem Atari~ST mit sehr gro"ser Wahrscheinlichkeit
  691. eine andere Directory-Struktur, ganz zu schweigen von anderen
  692. Computersystemen, wo Pfade m"oglicherweise ganz anders aufgebaut sind.
  693. %----------------------- Environment-Variablen --------------------------
  694. \section{Environment-Variablen}\label{environment}
  695. Einige grundlegende Einstellungen von \mf\ kann man mit einer Reihe von
  696. En\-vi\-ron\-ment-Variablen t"atigen. In den meisten Shells (z.B. in Gemini)
  697. kann man dies mit dem \verb|setenv|-Befehl angeben, es gibt aber auch
  698. Programme, die bei jedem Einschalten des Rechners das Environment einstellen.
  699. \begin{description}
  700. \item[\benv{MF\_RESOURCE} {\it Dateiname\/}] \quad \mf\ sucht die
  701.    Resource-Datei im AES-Stan"-dard"-pfad (meist das aktuelle Verzeichnis).
  702.    Wenn sie dort nicht gefunden wurde, versucht \mf, seinen eigenen
  703.    Standort (also das Verzeichnis, von dem aus das Programm geladen wurde)
  704.    ausfindig zu machen und sucht dort nach einem \file{METAFONT.RSC}.
  705.    Da es Situationen geben kann, in denen \mf\ seinen Programmnamen
  706.    und Standort nicht findet, wurde die M"oglichkeit geschaffen, den
  707.    Ort der Resource-Datei "uber diese Environment-Variable anzugeben.
  708. \item[\benv{MF\_NOGEM} {\it Zahl\/}] \quad In manchen F"allen kann es
  709.    sinnvoll oder zumindest w"un"-schenswert sein, wenn \mf\ keine Ausgabe
  710.    in \gem-Fenster macht, sondern nur die \gemdos-Ein/Ausgabe verwendet.
  711.    Wenn diese Environ"-ment-Variable auf \verb|"1"| gesetzt ist, oder
  712.    wenn die Extension des Programmnamens \file{.ttp} oder \file{.tos}
  713.    ist (und die Suche nach dem eigenen Namen geklappt hat), wird
  714.    keine einzige AES- oder VDI-Funktion aufgerufen, s"amtliche
  715.    Textein- und ausgaben laufen "uber \gemdos, daf"ur ist allerdings
  716.    auch keine Grafikausgabe mehr m"oglich.
  717. \item[\benv{MF\_TEXTWIND} {\it x y Breite H"ohe\/}] \quad
  718.    Mit dieser Variable kann man die Fensterposition und -gr"o"se des
  719.    Textfensters beim Programmstart angeben. Dabei wird
  720.    eine Folge von maximal vier durch Leerzeichen voneinander getrennten
  721.    Zahlen genannt, die nacheinander die gew"unschte x- und y-Position
  722.    sowie Breite und H"ohe des Fenster-{\em Inneren} in Pixeln bedeuten.
  723.    Werte, die zu klein, zu gro"s oder gar nicht angegeben sind, werden
  724.    mit den Maximalwerten belegt: {\it x} und {\it y} so, da"s die linke
  725.    obere Ecke des Textfensters in der linken oberen Ecke des Desktops
  726.    liegt, {\it Breite\/} und {\it H"ohe\/} mit den Abmessungen des
  727.    Desktops (abz"uglich des Fensterrahmens), h"ochstens aber 25~Zeilen
  728.    bzw.\ 80~Zeichen (es werden Zeichenbreite und -h"ohe des aktuellen
  729.    Systemzeichensatzes zur Berechnung herangezogen).
  730.    Zum Beispiel kann man mit \verb|setenv MF_TEXTWIND "0 0 640 200"|
  731.    angeben, da"s das Textfenster anf"anglich zwar links oben steht,
  732.    aber auf dem normalen SM124-Schwarz"-wei"s-Monitor von Atari nur
  733.    die obere H"alfte des Bildschirms ausf"ullt.
  734. \item[\benv{MF\_GRAPHWIND} {\it x y Breite H"ohe x-Offset y-Offset\/}] \quad
  735.    F"ur die ersten vier Parameter gilt das f"ur \env{MF\_TEXTWIND} gesagte,
  736.    bezogen auf das Grafikfenster. Die Maximalgr"o"se ist die Gr"o"se des
  737.    Grafikpuffers (640 mal 400 bzw.\ die Werte der n"achsten beiden
  738.    Environment-Variablen).
  739.    Die beiden zus"atzlichen Zahlen geben den anf"anglichen Offset der linken
  740.    oberen Ecke des Fensters von der linken oberen Ecke des Fensterinhaltes an.
  741.    Will man beim Programmstart also den Grafik-Puffer ganz links oben sehen,
  742.    h"angt man noch \verb|" 0 0"| oder gar nichts (weil das die
  743.    Standard-Einstellung ist) an den Environment-String an.
  744.    \verb|" 100 200"| sagt, da"s man die 100~Pixel am linken Rand und die
  745.    200~Pixelzeilen am oberen Pufferrand "`"uberspringen"' (d.h. nicht im
  746.    Fenster sehen) will. Wenn die Werte zu gro"s sind, wird der maximal
  747.    m"ogliche Wert genommen.
  748.    Man kann also z.B. bei einem $640\times400$-Puffer die Werte \verb|" 700 500"|
  749.    angeben, und hat dann auf jeden Fall die rechte untere Grafikpuffer-Ecke
  750.    im Fenster.
  751. \item[\benv{MF\_SCREENWIDTH} {\it Zahl\/}]
  752. \item[\benv{MF\_SCREENHEIGHT} {\it Zahl\/}] \quad
  753.    S"amtliche Grafikausgaben gehen zun"achst in ei\-nen internen Puffer,
  754.    der im Normalfall $640\times400$~Pixel gro"s ist. Das
  755.    Grafikfenster auf dem Bildschirm stellt einen Ausschnitt aus diesem
  756.    Puffer dar. Wenn man einen Gro"s"-monitor verwendet oder oft sehr gro"se
  757.    \mf-Zeichen erzeugt, kann man den Grafikpuffer vergr"o"sern, indem
  758.    man die Environment-Variablen \env{MF\_SCREENWIDTH} und
  759.    \env{MF\_SCREENHEIGHT} mit der gew"unschten Zahl der Pixel (horizontal
  760.    bzw.\ vertikal) belegt. Der Nachteil dieser Angelegenheit ist der
  761.    gr"o"sere Speicherbedarf ($\hbox{Breite}\times\hbox{H"ohe}/8$~Bytes).
  762.    Wenn zus"atzlich in der Kommandozeile die Optionen \verb|-w| oder
  763.    \verb|-h| verwendet wurden, so gelten die dort angegebenen Werte.
  764.    {\bf ACHTUNG}: Mit diesen Variablen "andert man ausschlie"slich
  765.    die Ausma"se des Grafikpuffers. Wieviel davon \mf\ f"ur seine
  766.    Grafikausgabe verwendet, ist eine andere Sache. Bei Benutzung der
  767.    Plain-Makros m"ussen deshalb noch die Variablen {\tt screen\_cols} und
  768.    {\tt screen\_rows} ge\-"an\-dert werden (die Werte werden z.B. in
  769.    \file{ATARI.MF} gesetzt), eventuell mu"s auch noch das {\tt openit}-Makro
  770.    ge"andert werden. Am besten liest man nach \file{ATARI.MF} noch
  771.    eine weitere Datei, z.B. \file{LOCAL.MF} ein, in der solche
  772.    "Anderungen untergebracht werden. Letzten Endes sind die im
  773.    "`primitiven \mf-Befehl"' {\tt openwindow} angegebenen Werte
  774.    f"ur \mf s Vorstellung von der Gr"o"se des Grafikpuffers
  775.    verantwortlich.
  776.    Technischer Hinweis f"ur "`Insider"': Da {\tt screen\_cols} und
  777.    {\tt screen\_rows} keine in \mf\ eingebauten Variablen sind, kann
  778.    und vor allem darf \mf\ diese nicht von sich aus ver"andern.
  779.    Darum ist es nicht m"oglich, hier automatisch die verwendete
  780.    Grafikpuffer-Gr"o"se einzutragen. Eine Alternative w"are es, die
  781.    \mf-Syntax um zwei weitere eingebaute Variablen zu erweitern, die
  782.    bei Programmstart mit der Puffergr"o"se initialisiert werden. Man
  783.    k"onnte dann "uber {\tt everyjob} die Plain-Variablen
  784.    {\tt screen\_cols} und {\tt screen\_rows} ver"andern. Dummerweise
  785.    gibt es aber keinen Variablennamen, der ausschlie"slich f"ur \mf\
  786.    reserviert w"are. Es kann also bei jedem beliebigen Variablennamen
  787.    passieren, da"s ein Anwender genau diesen Namen schon in seinem
  788.    Programm verwendet hat, womit die Kompatibilit"at nicht mehr
  789.    gew"ahrleistet w"are. Vorschl"age hierzu sind sehr willkommen.
  790. \item[\benv{MF\_EXTCHARSET} {\it Zahl\/}] \quad
  791.    Wenn die Variable \env{MF\_EXTCHARSET} auf \verb|"1"| gesetzt
  792.    wird, dann stellt \mf\ die Umlaute und andere Zeichen oberhalb von 127
  793.    nicht mehr in der Ersatzdarstellung \verb|^^|$xx$ (z.B. \verb|^^84| f"ur
  794.    "`"a"') dar, sondern direkt als Umlaut bzw.\ das entsprechende Sonderzeichen.
  795.    Diese speziellen Zeichen k"onnen allerdings nur in Strings, Kommentaren
  796.    und in Dateinamen verwendet werden, in allen anderen F"allen beschwert
  797.    sich \mf\ "uber ein "`\verb|invalid character|"'. Achtung:
  798.    \env{MF\_EXTCHARSET} wird nur von \inimf\ ausgewertet und in die
  799.    Base-Datei geschrieben. Um das Verhalten von \mf\ zu beeinflussen, mu"s
  800.    mit \inimf\ eine entsprechende Base-Datei erzeugt werden.
  801.    Wer also die Umlaute auch in der Ausgabe als solche sehen m"ochte, sollte
  802.    die Environ\-ment-Va\-riable \env{MF\_EXTCHARSET} auf \verb|"1"| setzen, um
  803.    dann mit der \TeX-Shell durch An\-w"ah\-len des Buttons "`\verb|IniMF|"' eine
  804.    neue Base-Datei zu erzeugen. F"ur \mf\ selbst ist es dann v"ollig
  805.    unerheblich, wie \env{MF\_EXTCHARSET} gesetzt ist, solange die richtige
  806.    Base-Datei verwendet wird.
  807.    F"ur die Experten hier noch eine etwas genauere Erkl"arung: Normalerweise
  808.    untersucht \mf\ jedes einzelne eingelesene Zeichen, ob es g"ultig
  809.    ist. Nur beim Einlesen von Strings, Dateinamen (nach
  810.    \verb|input|) und Kommentaren wird dieser Test au"ser Kraft gesetzt. In
  811.    diesen drei F"allen kann also praktisch jedes beliebige Zeichen verwendet
  812.    werden, unabh"angig davon, ob mit der Environment-Variablen
  813.    \env{MF\_EXTCHARSET} ein erweiterter Zeichensatz aktiviert wurde oder
  814.    nicht. Erst bei der Ausgabe dieser Zeichen tritt ein Unterschied zu Tage:
  815.    Ein Standard-\mf\ gibt diese Zeichen in einer Ersatzdarstellung aus,
  816.    z.B. ein "`"a"' als "`\verb|^^84|"' (das ist der Hexadezimalcode mit
  817.    zwei \verb|^| davor). Durch Setzen von \env{MF\_EXTCHARSET} kann diese
  818.    Umwandlung unterdr"uckt werden, so da"s auch ein ganz normales "`"a"' wieder
  819.    ausgegeben wird. Allerdings wird diese Ausgabe-Umwandlungstabelle (als
  820.    Teil des Stringpools) in der Base-Datei abgespeichert, die von \inimf\
  821.    erzeugt wird. Ob also ein "`"a"' in der Eingabe als "`"a"' oder als
  822.    "`\verb|^^84|"' in der Ausgabe erscheint, h"angt einzig und allein davon
  823.    ab, wie \env{MF\_EXTCHARSET} gesetzt war, als die Base \file{plain.bse}
  824.    mit \inimf\ (mit dem Kommando \verb|dump|) erzeugt wurde.
  825.    Mutige k"onnen sich eine Base-Datei auch direkt mit einem Editor ansehen,
  826.    um herauszufinden, ob sie Umlaute direkt oder in der Ersatzdarstellung
  827.    definiert. Dazu mu"s man nur die 128 Zeichen vor dem String \verb|pencircle|
  828.    anschauen: enthalten sie die Zeichen "`{\tt \c C"u\'e\^a"a} \dots\
  829.    $\sqrt{ }{}^n{}^2{}^3${\tt \={ }}"', sind die Umlaute aktiviert,
  830.    ansonsten stehen dort die Ersatzdarstellungen "`\verb|^^c0^^c1| \dots\
  831.    \verb|^^fe^^ff|"'.
  832. \item[\benv{ARGV}] \quad Wird f"ur die erweiterte Kommandozeile
  833.    (\env{ARGV}-Verfahren) benutzt und sollte vom Benutzer nicht ver"andert
  834.    werden. Eine genaue Beschreibung findet man in
  835.    der Datei \file{EXARG.DOC}, "`GEMDOS Extended Argument
  836.    (ARGV) Specification"' im \file{DOC}-Ordner.
  837. \end{description}
  838. %--------------------- Rueckgabewerte von METAFONT --------------------------
  839. \section{R"uckgabewerte von \protect\mf}
  840. Jedes Programm gibt an das aufrufende Programm eine Zahl zur"uck, den
  841. R"uckgabewert. Mit Hilfe dieses Wertes kann man mit den meisten Shells
  842. eventuell aufgetretene Fehler oder besondere Ereignisse w"ahrend des
  843. Programmlaufes erkennen und entsprechend darauf reagieren. Es ist "ublich,
  844. da"s bei einem fehlerfreien Lauf die Zahl Null zur"uckgegeben wird. Da
  845. bei der Erzeugung eines Zeichensatzes eine ganze Menge ungew"ohnliches
  846. passieren kann, wurden f"ur \mf\ sechs weitere Werte definiert ("ubrigens
  847. gelten genau die gleichen Konventionen auch f"ur das \TeX\ von Stefan
  848. Lindner). Im folgenden also eine vollst"andige Liste der Werte, die \mf\
  849. an das aufrufende Programm zur"uckgeben kann:
  850. \begin{description}
  851. \item[0 -- no error] Es lief alles zur vollsten Zufriedenheit von \mf.
  852. \item[1 -- warning] W"ahrend des Programmlaufes wurde mindestens eine
  853.    Warnung ausgegeben, es wurden jedoch keine ernsthaften Fehler gefunden.
  854. \item[2 -- error] Mindestens ein Fehler ist aufgetreten, die Arbeit wurde
  855.    aber korrekt beendet, die erzeugten Daten sind (eventuell beschr"ankt)
  856.    verwendbar.
  857. \item[3 -- fatal error] \mf\ mu"ste wegen eines fatalen Fehlers abgebrochen
  858.    werden, die erzeugten Dateien sind h"ochstwahrscheinlich unvollst"andig.
  859.    Dies kann z.B. passieren, wenn \mf\ keine oder nur eine fehlerhafte
  860.    Base-Datei finden konnte, wenn mehr als 100 normale Fehler aufgetreten
  861.    sind, ein interner Fehler\footnote{ist zwar unwahrscheinlich, aber nie
  862.    v"ollig auszuschlie"sen! In diesem Fall bitte ich um sofortige
  863.    Benachrichtigung zusammen mit einer m"oglichst genauen Fehlerbeschreibung}
  864.    entdeckt wurde oder der interne Speicher (siehe Speicherverwaltung)
  865.    "ubergelaufen ist.
  866. \item[4 -- edit] Der Benutzer hat bei einem aufgetretenen Fehler oder einer
  867.    Unterbrechung (Interrupt) ein `{\tt e}' eingetippt. Wenn mittels der
  868.    `{\tt -e}'-Option ein Speicherbereich spezifiziert wurde, schreibt \mf\
  869.    in diesen den Namen der aktuellen Eingabedatei und die Zeilennummer.
  870. \item[5 -- exit] Wenn der Benutzer in der Fehlerbehandlung ein `{\tt x}'
  871.    eintippt oder w"ah"-rend einer Eingabe die Escape-Taste bet"atigt, dann wird
  872.    dieser Wert zur"uckgeliefert.
  873. \item[6 -- low memory] Zeigt an, da"s der freie Hauptspeicher (RAM) nicht
  874.    ausreicht, um \mf\ starten zu k"onnen (siehe Speicherverwaltung).
  875.    Abhilfe schafft nur entweder das Entfernen nicht ben"otigter residenter
  876.    Programme oder der Kauf von mehr Speicher.
  877. \end{description}
  878. %------------------------ Speicherverwaltung --------------------------
  879. \section{Speicherverwaltung}
  880. Beim Programmstart fordert \mf\ einen konstanten Speicherbereich ("`interner
  881. Speicher"') vom Betriebssystem an, in den es alle Variablen speichern kann.
  882. Dieser Speicher ist in verschiedene Bereiche aufgeteilt (z.B. f"ur Strings,
  883. Eingabepuffer, verschiedene Kernings, "`main memory"' f"ur Zahlen, Pfade,
  884. Pens, Transformationsmatrizen usw.). Wenn das
  885. Betriebssystem diesen Speicher nicht zur Verf"ugung stellen kann (wegen
  886. residenter Programme, RAM-Disk o."a.), wird der R"uckgabewert~6
  887. zur"uckgeliefert.
  888. Wenn \mf\ jedoch w"ahrend der Arbeit feststellt, da"s einer der Bereiche
  889. im internen Speicher zu klein ist (z.B. bei endlos rekursiven Makros, zu
  890. vielen Strings, zu langen Zeilen, \dots), so
  891. meldet es "`\verb|capacity exceeded|"' zusammen mit der Angabe, welcher
  892. Bereich gesprengt wurde. In diesem Fall kann der Benutzer nur versuchen,
  893. sparsamer mit den Ressourcen umzugehen (das sagt sich nat"urlich leicht,
  894. aber es ist kaum m"oglich, hier konkretere Hinweise zu geben; ein paar Tips
  895. kann man noch im \mf book\cite{mfbook} von Knuth finden). Im
  896. "au"sersten Notfall kann man auch bei mir anfragen, ob es m"oglich ist,
  897. den entsprechenden Bereich zu vergr"o"sern; das h"atte jedoch auf jeden
  898. Fall eine "Anderung des Programmes zur Folge, so da"s man auf diese
  899. M"oglichkeit nur zur"uckgreifen sollte, wenn man sich sicher ist, da"s
  900. eine andere L"osung nicht m"oglich oder nicht vertretbar ist.
  901. F"ur "`Insider"' sind in Tabelle~\ref{tab-konst} die Werte der wichtigsten
  902. Konstanten von \mf\ angegeben, so wie sie in dieser Implementation
  903. gew"ahlt wurden. Eine ausf"uhrliche Erkl"a"-rung dieser Variablen findet man
  904. in~\cite{mfprog}.
  905. \begin{table}[htbp]\begin{center}
  906. \begin{tabular}{|l|l|r|}
  907.    \hline
  908.    main memory size     & {\it mem\_max = mem\_top}   & 65\,534  \\
  909.                         & {\it mem\_min = mem\_bot}   & 0        \\
  910.    number of internals  & {\it max\_internal}         & 100      \\
  911.    buffer size          & {\it buf\_size}             & 2000     \\
  912.    error messages       & {\it error\_line}           & 72       \\
  913.                         & {\it half\_error\_line}     & 42       \\
  914.    text output width    & {\it max\_print\_line}      & 79       \\
  915.    graphics screen size & {\it screen\_width}         & variabel (640) \\
  916.                         & {\it screen\_depth}         & variabel (400) \\
  917.    input stack          & {\it stack\_size}           & 30       \\
  918.    number of strings    & {\it max\_strings}          & 2\,500   \\
  919.    string pool size     & {\it pool\_size}            & 40\,000  \\
  920.                         & {\it string\_vacancies}     & 8\,000   \\
  921.    GF file buffer       & {\it gf\_buf\_size}         & 800      \\
  922.    file names           & {\it file\_name\_size}      & 250      \\
  923.    TFM header words     & {\it header\_size}          & 100      \\
  924.    ligature/kern steps  & {\it lig\_table\_size}      & 5000     \\
  925.    distinct kern amounts& {\it max\_kerns}            & 500      \\
  926.    {\bf fontdimen} parameters & {\it max\_font\_dimen}& 50       \\
  927.    symbolic tokens      & {\it hash\_size}            & 2\,100   \\
  928.    input files          & {\it max\_in\_open}         & 12       \\
  929.    macro parameters     & {\it param\_size}           & 150      \\ \hline
  930. \end{tabular}
  931. \caption{\mf-Konstanten} \label{tab-konst}
  932. \end{center}\end{table}
  933. %***************************** INIMF ***************************************
  934. \chapter{INIMF}\label{kap-inimf}
  935. Auf der Programmdiskette befinden sich zwei unterschiedliche Versionen von \mf:
  936. \file{METAFONT.PRG} und \file{INIMF.PRG}. Dabei ist ersteres f"ur die t"agliche
  937. Arbeit gedacht; \inimf\ wird im allgemeinen nur zur Erzeugung von
  938. Base-Dateien (\file{.BSE}) ben"otigt. Wer bereits die Format-Dateien
  939. (\file{.FMT}) von \TeX\ kennt, kann den n"achsten Absatz "uberspringen, denn
  940. die Base-Dateien bei \mf\ entsprechen genau den Format-Dateien bei \TeX.
  941. Beim Programmstart m"ussen sehr viele Variablen initialisiert und der
  942. sogenannte "`String-Pool"' (Datei \file{MF\_POOL}) mit allen
  943. vordefinierten Strings eingelesen werden. Au"serdem wird fast jeder
  944. Benutzer zumindest die Makros aus der Datei \file{PLAIN.MF} verwenden,
  945. da die sogenannten "`pri\-mi\-tives"' -- also die Befehle des "`nackten"'
  946. \mf\ ohne Plain-Makros -- so primitiv sind (wie der Name schon sagt),
  947. da"s man sehr viel tippen m"u"ste, um nur ein paar einfache Sachen auf
  948. den Bildschirm zu bringen, geschweige denn einen ganzen Zeichensatz.
  949. Die "`pri\-mi\-tives"' k"onnte man auch als die "`Maschinensprache"' von
  950. \mf\ bezeichnen. Wenn \mf\ bei jedem Programmstart erst diese ganzen
  951. Initialisierungen ausf"uhren und Makrodefinitionen einlesen m"u"ste,
  952. w"urde das recht lange dauern. Darum hat Knuth eine M"oglichkeit
  953. vorgesehen, diese Initialisierungen und Definitionen nach einmaliger
  954. Ausf"uhrung in kompakter Form auf Diskette bzw.\ Platte abzuspeichern.
  955. Diese Datei wird Base-Datei genannt. Wenn man das einmal erledigt hat,
  956. braucht das Programm in Zukunft nur noch die Base-Datei einzulesen, und
  957. ist danach sofort startbereit.
  958. Der Unterschied zwischen \inimf\ und \mf\ besteht im wesentlichen darin,
  959. da"s bei \mf\ die komplette Variablen-Initialisierung und das Lesen des
  960. String-Pools entfernt wurde, wodurch es nicht nur schneller, sondern auch
  961. um einiges k"urzer als \inimf\ ist. Aus diesem Grund braucht es aber 
  962. unbedingt eine Base-Datei, um arbeiten zu k"onnen. Und zur Erzeugung so
  963. einer Base-Datei braucht man eben \inimf, auch deshalb, weil der Befehl
  964. zum Schreiben der Base-Datei ({\tt dump}) im normalen \mf\ gar nicht
  965. vorhanden ist.
  966. Ein weiterer Unterschied besteht in der Berechnung einiger "`statistischer"'
  967. Werte w"ahrend der Arbeit. Wenn man z.B. die Variable {\it tracingstats\/}
  968. auf einen positiven Wert setzt, so erh"alt man am Ende der LOG-Datei einige
  969. Informationen dar"uber, wie stark der interne Speicher ausgenutzt wurde.
  970. Das Mitf"uhren und Aktualisieren solcher Zusatzinformationen kostet jedoch
  971. Zeit und Speicherplatz, deshalb wurden die entsprechenden Code-Teile in
  972. \file{METAFONT.PRG} entfernt. Wenn man diese Informationen ben"otigt,
  973. mu"s man auf \inimf\ zur"uckgreifen, mu"s daf"ur aber etwas mehr Zeit
  974. und Speicher einkalkulieren. An dieser Stelle sei nochmal betont, da"s
  975. man im Prinzip auch mit \inimf\ allein ausk"ame; alles, was man mit \mf\
  976. machen kann, funktioniert auch mit \inimf\ (vorausgesetzt, man hat gen"ugend
  977. Speicher zur Verf"ugung). Insbesondere kann man auch bei \inimf\ eine
  978. Base-Datei laden (z.B. durch Eingabe von `{\tt \&plain}' in der Startzeile).
  979. Lediglich wenn man keine Base-Datei in der Startzeile angibt, l"adt \mf\
  980. die in der Setup-Datei angegebene {\tt defaultbase}, w"ahrend \inimf\ in
  981. diesem Fall gar keine Base-Datei l"adt, sondern nur seine Variablen
  982. initialisiert und den String-Pool liest (nicht aber die Plain-Makros!).
  983. Abschlie"send nochmal eine kurze Zusammenfassung der Besonderheiten von
  984. \inimf:
  985. \begin{itemize}
  986. \item alle Variablen werden beim Programmstart initialisiert;
  987. \item der String-Pool wird gelesen (der Dateiname steht in der Setup-Datei
  988.    unter {\tt poolfile});
  989. \item der Befehl {\tt dump} erzeugt eine Base-Datei;
  990. \item wenn in der Startzeile keine Base-Datei angegeben wird, wird auch
  991.    keine geladen;
  992. \item es werden zus"atzliche Statistiken gef"uhrt. Diese erh"alt man,
  993. %A5   wenn die Variable $\hbox{\it tracingstats\/}>0$ bzw.\ $\hbox{\it tracingedges\/}>1$;
  994.    wenn $\hbox{\it tracingstats\/}>0$ bzw.\ $\hbox{\it tracingedges\/}>1$;
  995. \item es wird mehr Hauptspeicher ben"otigt (f"ur zus"atzlichen Programmcode
  996.    und die statistischen Informationen);
  997. \item es wird mehr Rechenzeit "`verbraten"'.
  998. \end{itemize}
  999. %********************** Erste Schritte mit METAFONT ************************
  1000. \chapter{Erste Schritte mit \protect\mf}
  1001. \label{kap-erste}
  1002. "`Aller Anfang ist schwer"', noch dazu, wenn man so komplexe und flexible
  1003. Programme wie \TeX\ oder \mf\ vor sich hat. Um dem Anf"anger dennoch einen
  1004. ganz kleinen Ausschnitt der M"oglichkeiten von \mf\ zu zeigen und ihm
  1005. gleich am Anfang ein paar kleine Erfolgserlebnisse zu erm"oglichen, sind
  1006. in diesem Kapitel ein paar Beispiele aufgef"uhrt, die am besten gleich am
  1007. Rechner ausprobiert werden sollten. F"ur die ersten beiden Beispiele kann
  1008. \mf\ direkt von der Programmdiskette aus gestartet werden, das dritte
  1009. Beispiel ist am einfachsten mit einem fertig installierten \mf\
  1010. durchzuf"uhren. Bevor ich's vergesse: beenden kann man das Programm durch
  1011. Eingabe von `{\tt end}' oder `{\tt bye}', genauso wie \TeX\ also (wenn
  1012. man mal davon absieht, da"s man in \mf\ kein `\bs' vor die Befehle setzen
  1013. mu"s).
  1014. %-------------------- Beispiel 1: einfache Grafik --------------------------
  1015. \section{Beispiel 1: einfache Grafik}
  1016. Im ersten Beispiel sollen ein paar Pinselstriche auf den Bildschirm gebracht
  1017. werden. Zun"achst mu"s \mf\ gestartet werden, z.B. durch Anklicken von
  1018. \file{METAFONT.PRG} auf dem Desktop (keine Angst, ich erkl"are jetzt nicht,
  1019. wie man mit \gem\ umgeht). Nach der "ublichen Titelzeile meldet sich das
  1020. Programm mit zwei Sternchen. Normalerweise kann man hier angeben, welchen
  1021. Zeichensatz man erzeugen m"ochte, und noch viele andere Dinge. F"ur dieses
  1022. Beispiel jedoch kann sich \mf\ "`ganz entspannt zur"ucklehnen"' und auf
  1023. die Eingabe warten, also tippt man
  1024. \begin{verbatim}
  1025.    \ relax
  1026. \end{verbatim}
  1027. ein. Zun"achst mu"s \mf\ mitgeteilt werden, da"s man die gezeichneten
  1028. Striche gleich auf dem Bildschirm sehen m"ochte. Dies erreicht man durch
  1029. Eingabe von
  1030. \begin{verbatim}
  1031.    screenstrokes;
  1032. \end{verbatim}
  1033. (den Strichpunkt nicht vergessen!).
  1034. Zum Zeichnen einer Linie ist die Angabe von zwei Punkten n"otig, wobei
  1035. die Koordinaten eines Punktes als {\tt (x,y)} eingegeben werden k"onnen:
  1036. \begin{verbatim}
  1037.    draw (10,10)..(50,30);
  1038. \end{verbatim}
  1039. Wenn man mehr als zwei Punkte angibt, wird eine Kurve durch alle Punkte
  1040. gezogen (sogenannte Bezier-Kurven), z.B.
  1041. \begin{verbatim}
  1042.    draw (10, 100)..(50,80)..(90,100);
  1043. \end{verbatim}
  1044. Das ist nat"urlich nur die einfachste Methode, zwei oder mehr Punkte mit
  1045. einer Kurve zu verbinden. \mf\ kann noch sehr viel mehr, z.B. kann man
  1046. f"ur bestimmte Punkte der Kurve eine Richtung vorgeben, mit
  1047. "`Kontrollpunkten"' die Form der Kurve fast beliebig ver"andern,
  1048. Schnittpunkte mit anderen Kurven definieren usw.
  1049. Experimentieren kann man auch mit speziellen Verbindungen, indem man die
  1050. zwei Punkte `..' durch `...' oder `-{}-' ersetzt. Um das Grafikfenster zu
  1051. l"oschen, kann man
  1052. \begin{verbatim}
  1053.    clearit; showit;
  1054. \end{verbatim}
  1055. eingeben. \verb|clearit| l"oscht dabei den Bildpuffer, \verb|showit| bringt
  1056. den gel"oschten Puffer dann auf den Bildschirm.
  1057. %-------------- Beispiel 2: METAFONT als ,,Rechner'' ------------------
  1058. \section{Beispiel 2: \protect\mf\ als "`Rechner"'}
  1059. Im zweiten Beispiel sollen die mathematischen F"ahigkeiten von \mf\ etwas
  1060. ausprobiert werden. Zun"achst kann man in \mf\ (wie in fast jeder anderen
  1061. Programmiersprache auch) Variablen definieren. Man h"atte das erste Beispiel
  1062. auch so eingeben k"onnen:
  1063. \begin{verbatim}
  1064.    x1 = 10;  y1 = 10;  x2 = 50;  y2 = 30;
  1065.    draw (x1, y1)..(x2, y2);
  1066. \end{verbatim}
  1067. Dabei steht das Gleichheitszeichen nicht f"ur eine Zuweisung, sondern f"ur
  1068. eine Gleichung. Der Unterschied wird klar, wenn man z.B. den Wert von $x1$
  1069. um eins erh"ohen will. Schreibt man
  1070. \begin{verbatim}
  1071.    x1 = x1 + 1;
  1072. \end{verbatim}
  1073. so beschwert sich \mf\ zu Recht, da"s diese Gleichung "`inkonsistent"'
  1074. (d.h.\ nicht l"osbar) ist, denn es gibt nun mal keine reelle Zahl, deren
  1075. Wert bei Addition von eins unver"andert bleibt. Will man eine Zuweisung
  1076. erreichen, mu"s man `:=' eingeben. Richtig w"are also in diesem Fall:
  1077. \begin{verbatim}
  1078.    x1 := x1 + 1;
  1079. \end{verbatim}
  1080. Interessanter ist aber wohl die Verwendung von Gleichungen. Lineare
  1081. Gleichungssysteme sind f"ur \mf\ was ganz allt"agliches. Man h"atte die
  1082. obigen Werte also auch so definieren k"onnen:
  1083. \begin{verbatim}
  1084.     x1 +  x2 = 60;
  1085.    3x1 + 2x2 = 130;
  1086. \end{verbatim}
  1087. Man kann leicht nachpr"ufen, da"s \mf\ dieses Gleichungssystem korrekt
  1088. gel"ost hat, wenn man
  1089. \begin{verbatim}
  1090.    show x1, x2;
  1091. \end{verbatim}
  1092. eingibt.
  1093. Interessant ist auch, da"s man nicht `{\tt 3$*$x1}' schreiben mu"s,
  1094. sondern den Malpunkt einfach weglassen kann, so wie es wohl (nicht nur)
  1095. jeder Mathematiker gewohnt ist. Es gibt nur sehr wenige andere
  1096. Programmiersprachen, in denen solche Selbstverst"andlichkeiten m"oglich sind.
  1097. Es bedarf wohl keiner besonderen Erw"ahnung, da"s f"ur \mf\ auch die
  1098. Rechenregel "`Punkt vor Strich"' nichts Unbekanntes ist. Ansonsten bietet
  1099. \mf\ unter anderem noch trigonometrische Funktionen, approximative (d.h.\
  1100. n"aherungsweise) L"osung von nichtlinearen Gleichungssystemen, Vektor-
  1101. und Matrizenrechnung. Durch die M"oglichkeit, Makros zu definieren (was
  1102. im Prinzip den Unterprogrammen oder Prozeduren herk"ommlicher
  1103. Programmiersprachen entspricht), kann man nat"urlich noch beliebig viele
  1104. andere mathematische Rechenverfahren implementieren.
  1105. Wer mehr "uber \mf\ erfahren m"ochte, sollte sich eines der im
  1106. Literaturverzeichnis genannten B"ucher zu Gem"ute f"uhren. Auch das genaue
  1107. Studium fertiger Zeichens"atze oder Logos ist wichtig, anfangen sollte man
  1108. mit einfacheren Dingen wie z.B. das \mf-Logo im Verzeichnis \file{MF\_LOGO}
  1109. oder das DFF-Logo von J"urgen~E.~G"unther, \file{dff.mf}. Auch die vielen
  1110. anderen kleinen Beispiele im \file{inputs}-Ordner sind in der Regel
  1111. relativ gut verst"andlich. An das Studium der CMR-Zeichens"atze sollte man
  1112. sich erst sp"ater heranwagen, denn diese Zeichens"atze sind in einem
  1113. Zeitraum von etlichen Jahren immer wieder verbessert und verfeinert worden,
  1114. so da"s der Blick meistens durch viele Details verstellt wird.
  1115. %-------------- Beispiel 3: Erzeugung eines Zeichensatzes ------------------
  1116. \section{Beispiel 3: Erzeugung eines Zeichensatzes}
  1117. Zum Schlu"s dieses Kapitels soll noch erkl"art werden, wie man mit \mf\
  1118. komplette "`Computer Modern Roman"' Zeichens"atze erzeugen kann. Das ist
  1119. wahrscheinlich eine der h"aufigsten Aufgaben dieses Programmes, schlie"slich
  1120. wollen (und k"onnen) nicht alle Benutzer ihre eigenen Zeichen entwerfen,
  1121. darum greift man in der Regel auf die fertigen Zeichens"atze von Knuth
  1122. zur"uck, die ja auch eine lange Entwicklungszeit hinter sich haben und
  1123. deshalb wenigstens halbwegs professionell aussehen (dennoch hat Knuth nie
  1124. behauptet, ein Typograph zu sein, er hat sich aber bei der Entwicklung der
  1125. Zeichens"atze von einigen Experten dieses Faches beraten lassen).
  1126. Als erstes sollte man nachschauen, ob in der Datei \file{ATARI.MF} ein
  1127. `mode\_def' f"ur den verwendeten Drucker vorhanden ist und wie dieser
  1128. hei"st. Wenn dort der gew"unschte Dru"cker nicht angegeben ist, sollte
  1129. man nach einem `mode\_def' suchen, dessen Auf"|l"osung der ge"-w"unsch"-ten
  1130. m"oglichst nahe kommt oder gleich ist. In diesem Fall wird man wohl fr"uher
  1131. oder sp"ater nicht darum herum kommen, sich einen eigenen Parametersatz zu
  1132. definieren. Vorher sollte man aber bei mir oder Stefan Lindner anrufen,
  1133. ob vielleicht inzwischen schon fertige Parameter existieren, es kommen fast
  1134. t"aglich neue hinzu.
  1135. Als Beispiel soll hier der Zeichensatz `{\tt cmr10}' in 1,44-facher
  1136. Vergr"o"serung f"ur einen Laserdrucker erzeugt werden, soda"s er in einem
  1137. \TeX-Dokument mit
  1138. \begin{verbatim}
  1139.    \font\bigtenrm = cmr10 scaled \magstep2
  1140. \end{verbatim}
  1141. angesprochen werden kann. Zum "Uben oder schnellen Ausprobieren kann man
  1142. alternativ auch einen kleinen Zeichensatz wie `{\tt logo10}' erzeugen,
  1143. dazu mu"s im folgenden Text nur {\tt cmr} durch {\tt logo} ersetzt werden.
  1144. \subsection{Erzeugen der Base-Datei}
  1145. Zun"achst mu"s man daf"ur sorgen, da"s eine geeignete Base-Datei vorhanden
  1146. ist. F"ur dieses Beispiel gen"ugen die Plain-Makros, also wird die Datei
  1147. \file{PLAIN.BSE} ben"otigt. Es ist zwar auf der Programmdiskette schon eine
  1148. fertige Datei vorhanden, dennoch soll hier kurz erl"autert werden, wie diese
  1149. Datei erzeugt wurde (schlie"slich fallen solche Dateien ja nur "au"serst
  1150. selten vom Himmel).
  1151. Wie in Kapitel~\ref{kap-inimf} bereits erw"ahnt wurde, ben"otigt man
  1152. f"ur diese Aufgabe das Programm \inimf. Man startet also \file{INIMF.PRG}
  1153. und gibt in der Startzeile (durch `$**$' gekennzeichnet)
  1154. \begin{verbatim}
  1155.    plain
  1156. \end{verbatim}
  1157. ein. Daraufhin werden die Plain-Makros geladen und im Speicher abgelegt.
  1158. Wenn wieder ein `$*$' erscheint, ist \mf\ zu weiteren Untaten bereit.
  1159. Jetzt kann man die eigenen Dateien laden, die damit bei jedem Start von
  1160. \mf\ automatisch mitgeladen werden. F"ur den Anfang also mal
  1161. \begin{verbatim}
  1162.    input atari
  1163. \end{verbatim}
  1164. um einige Werte wie Auf"|l"osung, Strichst"arke etc.\ f"ur ein paar "ubliche
  1165. Ausgabeger"ate (z.B. {\tt stscreen}, {\tt stlaser} und {\tt starnl}) zu
  1166. definieren.
  1167. F"ur den Anfang gen"ugt das mal, man kann \inimf\ mitteilen, da"s
  1168. es nun seinen Speicher "`dumpen"' soll:
  1169. \begin{verbatim}
  1170.    dump
  1171. \end{verbatim}
  1172. Zur Belohnung erh"alt man ein paar neue Dateien:
  1173. \begin{description}
  1174. \item[\file{PLAIN.BSE}]  in dem Ordner, der in der Setup-Datei unter
  1175.    {\tt dumppath} angegeben wurde. Das ist die Base-Datei, in der alle
  1176.    wichtigen Daten f"ur \file{METAFONT.PRG} enthalten sind.
  1177. \item[\file{PLAIN.LOG}]  im {\tt logpath}-Ordner. In diese Datei hat \inimf\
  1178.    s"amtliche Bild"-schirm-Aus"-ga"-ben und noch einiges mehr mitprotokolliert,
  1179.    damit man sich auch sp"ater noch ansehen kann, was das Programm alles
  1180.    angestellt hat.
  1181. \end{description}
  1182. \subsection{Die Startzeile}
  1183. Diese Base-Datei kann man nun mit jedem der beiden Programme (\inimf\
  1184. und \mf) ruckzuck einladen, indem man in die Startzeile
  1185. \begin{verbatim}
  1186.    &plain
  1187. \end{verbatim}
  1188. (man beachte das `\verb|&|'!) eintippt. Dadurch wird die Datei
  1189. \file{PLAIN.BSE} geladen, und man hat alles wieder so, wie es vor dem
  1190. Eintippen von \verb|dump| war.
  1191. Jetzt wird es aber doch allerh"ochste Zeit, da"s genau erkl"art wird, was
  1192. die Startzeile ist, und welche Besonderheiten sie aufweist. Die Startzeile
  1193. ist die erste Zeile, die man f"ur \mf\ eingibt. Eine M"oglichkeit besteht
  1194. bereits in der Kommandozeile {\em nach\/} den Optionen. Wenn dort nichts
  1195. eingegeben wurde, meldet sich das Programm mit zwei Sternchen (`$**$') am
  1196. Zeilenanfang, um anzudeuten, da"s es die Startzeile erwartet (in den
  1197. normalen Zeilen steht nur {\em ein\/} Sternchen am Zeilenanfang). In dieser
  1198. Startzeile mu"s nun angegeben werden, welche Base-Datei geladen werden soll
  1199. (bei \inimf\ optional), au"serdem leitet \mf\ aus dieser Zeile den
  1200. "`Jobname"' ab, nach dem s"amtliche Ausgabedateien (GF-, TFM- und LOG-Datei)
  1201. benannt werden. Die Besonderheiten der Startzeile sind:
  1202. \begin{itemize}
  1203. \item Eine Base-Datei l"a"st sich durch Voranstellen eines `{\tt \&}' vor dem
  1204.    Dateinamen laden (z.B. `{\tt \&plain}' l"adt die Base-Datei
  1205.    `\file{PLAIN.BSE}'). Wenn eine Base-Datei angegeben ist, mu"s diese
  1206.    auf jeden Fall am Anfang der Startzeile stehen.
  1207. \item Eingabedateien (\verb|*|\file{.MF}) kann man einfach durch Angabe des
  1208.    Datei"-namens laden, w"ah"-rend man in den normalen \mf-Eingabezeilen
  1209.    `{\tt input \it name\/}' schreiben m"usste (z.B. `{\tt cmr10}' l"adt die
  1210.    Eingabedatei `\file{CMR10.MF}').
  1211. \item Wenn man in dieser Zeile andere Sachen eingeben m"ochte, z.B.
  1212.    Initialisierungen irgendwelcher Variablen, bevor eine Datei gelesen
  1213.    wird, mu"s man mit einem `\verb|\|' auf den normalen
  1214.    Eingabemodus umschalten. Danach kann man alles machen, was man
  1215.    normalerweise (in `\verb|*|\file{.MF}'-Eingabedateien oder in Zeilen mit nur
  1216.    einem `$*$' am Anfang) machen kann. "Ublicherweise gibt man hier das
  1217.    Ausgabeger"at und eventuelle Vergr"o"serungen an, z.B.
  1218.    \begin{verbatim}
  1219.    \ mode=stlaser; mag=1.44;
  1220. \end{verbatim}
  1221.    setzt Auf"|l"osung etc.\ auf die Werte, die im `{\tt mode\_def stlaser}'
  1222.    in der Datei \file{ATARI.MF} angegeben wurden, und vergr"o"sert den
  1223.    Zeichensatz auf 1.44-fache Gr"o"se. Will man mit diesen Werten einen
  1224.    Zeichensatz erzeugen, so m"ussen die Zuweisungen nat"urlich {\em vor\/}
  1225.    dem Laden der Source\-datei ausgef"uhrt werden (es n"utzt nichts, wenn
  1226.    \mf\ zuerst den ganzen Zeichensatz erzeugt und erst hinterher erf"ahrt,
  1227.    da"s dieser vergr"o"sert werden sollte). Da man nach Eingabe
  1228.    des \verb|\| nicht mehr im "`Startzeilen-Modus"' ist, mu"s man die
  1229.    Sourcedatei nun (wie "ublich) mit \verb|input| laden.
  1230. \item Anhand der Startzeile bestimmt \mf\ den Jobnamen. Dabei richtet sich
  1231.    \mf\ nach der ersten Datei, die eingelesen wird (ohne Beachtung einer
  1232.    eventuell angegebenen Base-Datei), also entweder der erste Dateiname
  1233.    ohne einem `{\tt \&}' davor, oder (falls vor dem `\verb|\|' keine
  1234.    {\tt MF}-Datei eingelesen wird) die erste Datei, die nach einem
  1235.    `\verb|\|' mit {\tt input} eingelesen wird. Wenn mit den Kommandos
  1236.    in dieser Zeile "uberhaupt keine \file{MF}-Datei eingelesen wird, 
  1237.    dann setzt \mf\ den Jobname auf `\file{MFPUT}'. Wenn man also
  1238. \begin{verbatim}
  1239.    &plain f1 \ input f2
  1240.    input f3
  1241. \end{verbatim}
  1242.    eingibt, hei"sen die Ausgabedateien `\file{F1.}xxx\file{GF}',
  1243.    `\file{F1.LOG}' und `\file{F1.TFM}', weil `\file{F1.MF}' die erste Datei
  1244.    ist, die gelesen wird (die Base-Datei wird nicht mitgerechnet, sonst
  1245.    hie"se ja alles `\file{PLAIN.}xxx').
  1246. \end{itemize}
  1247. Wenn man in der ersten Zeile kein Ausgabeger"at spezifiziert, dann verwendet
  1248. \mf\ `\verb|mode = proof;|', was zwar zum Ausprobieren ganz nett aussieht
  1249. (eigentlich sollte sich dieses Schauspiel niemand entgehen lassen, man sieht
  1250. die Zeichen mal richtig gro"s und in hervorragender Sch"arfe auf dem Monitor),
  1251. aber f"ur einen Ger"atetreiber in der Regel nicht so ideal ist (schon allein
  1252. wegen der Auf"|l"osung von 2601.72 dpi). Also mu"s man das gew"unschte Ger"at
  1253. explizit angeben, indem man in der ersten Zeile vor dem Namen der
  1254. Eingabedatei `{\tt mode=stlaser;}' angibt. Damit nun aber \mf\ nicht nach
  1255. der Eingabedatei `{\tt mode}' sucht, ist vor der Gleichung noch ein
  1256. `\verb|\|' n"otig. Wenn keine Vergr"o"serung angegeben wird, ist sie
  1257. automatisch 1. Allgemein wird die erste Zeile also ungef"ahr so aussehen:
  1258. \begin{verbatim}
  1259.    &<Base> \ mode=<Geraet>; mag=<Vergroesserung>; input <Datei>;
  1260. \end{verbatim}
  1261. wobei f"ur die Namen in spitzen Klammern entsprechende Werte einzusetzen
  1262. sind (die Klammern tippt man nat"urlich nicht mit ein).
  1263. \subsection{Die "`Sch"opfung"'}
  1264. Jetzt steht alles bereit, um den Zeichensatz zu erzeugen. Man starte also
  1265. das Programm \file{METAFONT.PRG} und gebe als Startzeile
  1266. \begin{verbatim}
  1267.    &plain \ mode=stlaser; mag=1.44; input cmr10
  1268. \end{verbatim}
  1269. ein. Nach einigen Minuten ist \mf\ fertig, und man hat ein paar weitere
  1270. Dateien auf der Diskette / Platte:
  1271. \begin{description}
  1272. \item[\bfile{CMR10.432}] sollte eigentlich \file{CMR10.432GF} hei"sen, aber
  1273.    \tos\ kann
  1274.    halt leider nur drei Zeichen in der Extension speichern. Die "`krumme"'
  1275.    Zahl 432 erh"alt man, wenn man die Ger"ate-Auf"|l"osung von 300 dpi
  1276.    (dots per inch) mit der Vergr"o"serung (in diesem Fall 1.44)
  1277.    multipliziert. Das ist also nun die GF-Datei, in der die Beschreibung
  1278.    der vielen Zeichen drin ist. Wenn man einen Zeichensatz f"ur ein anderes
  1279.    Ger"at generiert hat, steht nat"urlich nicht 432, sondern die gew"ahlte
  1280.    Auf"|l"osung (Vergr"o"serung nicht zu vergessen) in der Extension,
  1281.    z.B. \file{CMR10.96G} (`\file{.96GF}' auf 3 Zeichen verk"urzt!) f"ur eine
  1282.    GF-Datei mit 96 dpi und Vergr"o"serung 1.
  1283. \item[\bfile{CMR10.LOG}] auch hier hat \mf\ wieder fein s"auberlich
  1284.    mitprotokolliert, was es alles gemacht hat.
  1285. \item[\bfile{CMR10.TFM}] diese Datei ben"otigt \TeX, um zu erfahren, wie
  1286.    gro"s die einzelnen Zeichen sind (wie sie tats"achlich aussehen,
  1287.    interessiert \TeX\ gar nicht, das geht einzig und allein den
  1288.    Druckertreiber etwas an). TFM steht f"ur "`\TeX\ Font Metric File"'.
  1289. \end{description}
  1290. Da die meisten Ger"atetreiber sogenannte PK-Files ("`Packed Font Files"')
  1291. bevorzugen, mu"s man nun noch die GF-Datei in eine PK-Datei umwandeln
  1292. (man k"onnte auch komprimieren sagen). Man startet also \file{GFTOPK.TTP}
  1293. und gibt diesem den Namen der GF-Datei und der gew"unschten PK-Datei,
  1294. also z.B.
  1295. \begin{verbatim}
  1296.    cmr10.432 \prtfonts\res300.slm\mag____1.440\cmr10.pk
  1297. \end{verbatim}
  1298. als Kommandozeile mit auf den Weg (zum Zwecke der Demonstration sei hier
  1299. mal davon ausgegangen, da"s die GF-Datei im aktuellen Ordner und
  1300. die Zeichens"atze f"ur die Druckertreiber im Ordner \verb|\prtfonts|
  1301. stehen, wobei letzterer entsprechend den Konventionen von Stefan Lindner's
  1302. Druckertreiber-Familie aufgebaut ist). Damit ist der Zeichensatz fertig und steht
  1303. zum Ausdrucken bzw.~Betrachten auf dem Bildschirm bereit.
  1304. %**************************** Zukunftsmusik ********************************
  1305. \chapter{Zukunftsmusik}
  1306. Die Arbeit an \mf\ ist noch nicht abgeschlossen, da gibt es noch
  1307. viel zu viele Ideen, was man besser und sch"oner machen k"onnte, und
  1308. der eine oder andere Fehler l"a"st sich vermutlich auch noch in
  1309. der Benutzeroberfl"ache finden. Sogar im \mf\ selbst kann man heute
  1310. noch Fehler finden, man versuche nur mal, in einer Feld-, Wald- und
  1311. Wiesen-Implementation das \inimf\ zu starten, keine Base-Datei zu
  1312. laden, und \verb|\showstats| einzugeben. In 90\% aller Versionen
  1313. (nat"urlich nicht in dieser) wird man "`{\tt Memory usage 23\&-1}"'
  1314. zur Antwort bekommen. Und $-1$ verbrauchte Speicherzellen ist
  1315. schon etwas ungew"ohnlich (keine Sorge, der Fehler ist inzwischen
  1316. an den "`Chef"' weitergegeben).
  1317. Da"s bei der Texteingabe kein Cursor zu sehen ist, st"ort manchmal schon
  1318. gewaltig. Irgendwann wird auch das sicherlich in den Griff zu bekommen
  1319. sein. Die Gedanken kreisen da allerdings viel weiter: wenn man die
  1320. Eingabe "uber allgemeine Textfenster (wie sie heutzutage in jeder
  1321. besseren grafischen Benutzeroberfl"ache enthalten sind, z.B. in X oder
  1322. in SunView) gestalten w"urde, h"atte man enorm viel mehr M"oglichkeiten,
  1323. angefangen bei einfachen Editorkommandos (Cursor-Bewegung, Zeichen l"oschen)
  1324. bis hin zu Cut/Paste-Operationen "uber mehrere Fenster (und damit mehrere
  1325. Dateien) hinweg. Eventuell k"onnte man das auch "uber h"ohere XACC-Levels
  1326. in Zusammenhang mit einem einfachen Accessory-Editor, der auch das XACC-%
  1327. Protokoll versteht, erledigen. Wer einen solchen Editor kennt, der noch
  1328. dazu frei kopierbar sein sollte (PD- oder Shareware), m"oge mich bitte
  1329. gleich benachrichtigen.
  1330. Sch"on w"are es auch, wenn man die Setup-Datei von \mf\ aus "andern k"onnte.
  1331. Ich stelle mir da einen Eintrag in der Men"uleiste vor, "ahnlich wie bei
  1332. vielen anderen \gem-Programmen, wo man die Standard-Pfade angeben und
  1333. anschlie"send abspeichern kann.
  1334. Wenn die Larc-Bibliothek mal ausgereift ist, dann wird sicherlich
  1335. auch in \mf\ die Behandlung der archivierten Dateien konsistenter
  1336. und nat"urlicher werden. Letzten Endes ist ein Larc-Archiv ja
  1337. nichts anderes als ein Directory, komplett mit Unterverzeichnissen
  1338. und Dateien, und so sollte auch der Benutzer keinen Unterschied
  1339. machen m"ussen (leider l"a"st sich das nicht so einfach auf den
  1340. Desktop ausweiten, denn da mu"s der Benutzer immer noch selbst
  1341. die entsprechenden Archivier-Programme aufrufen, anstatt sie wie
  1342. normale Directories "uber Desktop-Fenster zu behandeln). In diesem
  1343. Zusammenhang ist auch nicht einzusehen, warum \mf\ keine mit Pfad
  1344. abgespeicherten Dateien in den Archiven duldet.
  1345. Ein sicher sehr interessantes, aber auch aufwendiges Projekt w"are, \mf\
  1346. mit der hervorragenden Benutzeroberfl"ache von {\mc SMALLTALK-80}
  1347. zu verbinden. Ein erster Ansatzpunkt dazu ist die M"oglichkeit, C-Funktionen
  1348. als "`primitive"' Methoden zu {\mc SMALLTALK-80} dazulinken zu k"onnen
  1349. (und im Prinzip ist \mf\ nichts anderes als eine C-Funktion namens
  1350. {\tt main}). Benutzern mit weniger als 4 MByte RAM w"urde das allerdings
  1351. vermutlich nicht sehr viel bringen (h"ochstens den Wunsch nach mehr
  1352. Speicher).
  1353. \begin{thebibliography}{9}
  1354. \bibitem{mfbook}
  1355.    Knuth, Donald E. {\it The \mf book}, Computers and Typesetting Vol.~C,
  1356.    Addison-Wesley, Reading (Massachussets) 1986. 361 Seiten.
  1357. Die definitive Anleitung zu \mf. Auf dieses Buch kann wohl nur
  1358. verzichten, wer ausschlie"slich "`Computer Modern Roman"'-Zeichens"atze
  1359. f"ur verschiedene Ausgabeger"ate erzeugt.  Wer mit den Parametern etwas
  1360. experimentieren will oder eigene Grafiken oder gar Zeichens"atze
  1361. erzeugen will, sollte sich das \mf book zulegen, denn da steht
  1362. praktisch alles drin, was der Benutzer wissen mu"s.
  1363. \bibitem{mfprog}
  1364.    Knuth, Donald E. {\it \mf: The Program}, Computers and Typesetting
  1365.    Vol.~D, Addison-Wesley, Reading (Massachussets) 1986. 560 Seiten.
  1366. Wer es ganz genau wissen will, kann hier den Original-Sourcecode in
  1367. {\mc WEB} nachlesen. Dieses Buch ist die Grundlage meiner C-Version von
  1368. \bibitem{texprog}
  1369.    Knuth, Donald E. {\it \TeX: The Program}, Computers and Typesetting
  1370.    Vol.~B, Addison-Wesley, Reading (Massachussets) 1984. 594 Seiten.
  1371. Der Sourcecode von \TeX\ f"ur alle, die auch dort hinter die Kulissen
  1372. schauen wollen. Ebenfalls in der Programmier- und Dokumentationssprache
  1373. {\mc WEB} geschrieben.
  1374. \bibitem{cm-typefaces}
  1375.    Knuth, Donald E. {\it Computer Modern Typefaces}, Computers and
  1376.    Typesetting Vol.~E, Addison-Wesley, Reading (Massachussets) 1986.
  1377.    590 Seiten.
  1378. Hier sind die ganzen \mf-Programme f"ur die komplette Computer Modern
  1379. Schriftenfamilie dokumentiert, zusammen mit vielen Probeausdr"ucken (proofs).
  1380. Man kann dieses Buch also als Nachschlagewerk, als Bilderbuch oder auch als
  1381. Lehrbuch f"ur beispielhafte \mf-Programmierung ansehen.
  1382. \bibitem{web}
  1383.    Knuth, Donald E. {\it The WEB System of Structured Documentation},
  1384.    Stanford Computer Science Report No.\ 980, Stanford University,
  1385.    Department of Computer Science, Stanford (California) 1983. 206 Seiten.
  1386. Anleitung zu {\mc WEB} und Sourcecode zu {\mc WEAVE} und {\mc TANGLE}, die
  1387. zusammen das {\mc WEB}-System bilden.
  1388. \bibitem{pandora}
  1389.    Billawala, Nazneen N. {\it Metamarks: Preliminary studies for a
  1390.    Pandora's Box of shapes}, Stanford Computer Science Report No.~1256,
  1391.    Stanford University, Department of Computer Science, Stanford
  1392.    (California) 1989. Erh"altlich von der \TeX\ Users Group.
  1393. Das Buch zu den Pandora-Fonts. Dieses Buch ist {\bf keine} Einf"uhrung
  1394. in \mf, sondern mehr ein Bilderbuch, das die Ergebnisse einiger
  1395. Experimente mit \mf\ zeigt. Das Herausragende an den Pandora-Fonts ist,
  1396. da"s sie von Anfang an f"ur und vor allem mit \mf\ entwickelt und nicht
  1397. wie die meisten anderen Zeichens"atze (cmr eingeschlossen) erst
  1398. nachtr"aglich f"ur \mf\ zurechtgebogen wurden. Wer die Pandora-Fonts
  1399. genauer studieren will, findet in diesem Buch einige Hinweise und die
  1400. grundlegenden Elemente (Serifen, Kreise, B"ogen, Bowls), aus denen die
  1401. Zeichen aufgebaut sind. Den Hauptteil des Buches machen
  1402. Parametervariationen und ihre Auswirkungen auf das Aussehen der
  1403. Zeichenelemente aus.
  1404. \bibitem{kopka90}
  1405.    Kopka, Helmut. {\it \LaTeX\ -- Erweiterungsm"oglichkeiten},
  1406.    2. Aufl., Addison-Wesley, Bonn 1991.
  1407. Obwohl es in diesem Buch haupts"achlich um \LaTeX\ geht, enth"alt es
  1408. auch eine knapp hundertseitige Kurzeinf"uhrung in \mf. Momentan ist dies
  1409. das einzige deutsche Buch, das \mf\ behandelt. Angefangen bei den
  1410. einzelnen Elementen des \mf-Systems (Programm-Umgebung) "uber die
  1411. wichtigsten Grundlagen von \mf\ und seiner Programmiersprache bis
  1412. hin zur Erzeugung eines Firmenlogos vermittelt Kopka das n"otige
  1413. Wissen, um fertige \mf-Programme in ihrer Grundstruktur erfassen
  1414. und eigene kleinere Arbeiten selbst erledigen zu k"onnen. Die ideale
  1415. Vorbereitung f"ur das Werk des "`Meisters"', das \mf book.
  1416. \end{thebibliography}
  1417. \end{document}
  1418.